我从一个单独的文件中获取输入,该文件当前有一个段落。我将段落中的每个单词存储到一个列表中,然后使用以下方法迭代它们:
for(String word:words)
然而,这个迭代器遍历每个WORD。如果我的输入文件中有两个由空行分隔的段落,如何识别此for-loop迭代器下的空行?我的想法是,迭代单词显然不同于越过行,所以我不确定。
答案 0 :(得分:0)
模式后面有一个空行:
\n\n
\r\n\r\n
\n -whitespace- \n
etc
模式后面的单词
-whitespace-nonwhitespace-whitespace-
非常不同的模式。因此,使用单词的定义循环使用某些内容将无法正常工作。
您可以使用Java扫描程序逐行查看文件。
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
中正则表达式的工作原理:How to check if a line is blank using regex
这是Scanner
上的javadoc:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html