0

現在1つの段落がある別のファイルから入力を取得しています。段落内のすべての単語をリストに保存し、これを使用してそれぞれを反復処理します。

for (文字列の単語: words)

ただし、この反復子は各 WORD を処理します。入力ファイルに空行で区切られた 2 つの段落がある場合、この for ループ反復子の下にある空行をどのように認識すればよいでしょうか? 私の考えでは、単語を反復することは行を反復することとは明らかに異なるため、よくわかりません。

4

1 に答える 1

0

空行は次のパターンに従います。

\n\n       
\r\n\r\n
\n -whitespace- \n 
etc

パターンに続く言葉

-whitespace-nonwhitespace-whitespace- 

非常に異なるパターン。したがって、単語の定義を使用して何かをループすることは決して機能しません。

Java スキャナーを使用して、ファイルを 1 行ずつ調べることができます。

public class LineScanner {

  public List<String> eliminateEmptyLines(String input) {
    scanner Scanner = new Scanner(input);
    ArrayList<String> output = new ArrayList<>();
    while (scanner.hasNextLine) {
      String line = scanner.nextLine;
      boolean isEmpty = line.matches("^\s*$"); 
      if !(isEmpty) {
        output.add(line);
      }
    }
    return output;
  }
}

正規表現の仕組みは次のString.matchesとおりです。正規表現を使用して行が空白かどうかを確認する方法は
次 のとおりです。http Scanner: //docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

于 2013-10-09T22:11:41.203 に答える