現在1つの段落がある別のファイルから入力を取得しています。段落内のすべての単語をリストに保存し、これを使用してそれぞれを反復処理します。
for (文字列の単語: words)
ただし、この反復子は各 WORD を処理します。入力ファイルに空行で区切られた 2 つの段落がある場合、この for ループ反復子の下にある空行をどのように認識すればよいでしょうか? 私の考えでは、単語を反復することは行を反復することとは明らかに異なるため、よくわかりません。
現在1つの段落がある別のファイルから入力を取得しています。段落内のすべての単語をリストに保存し、これを使用してそれぞれを反復処理します。
for (文字列の単語: words)
ただし、この反復子は各 WORD を処理します。入力ファイルに空行で区切られた 2 つの段落がある場合、この for ループ反復子の下にある空行をどのように認識すればよいでしょうか? 私の考えでは、単語を反復することは行を反復することとは明らかに異なるため、よくわかりません。
空行は次のパターンに従います。
\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