识别文本中的空行?

时间:2013-10-09 22:05:49

标签: java

我从一个单独的文件中获取输入,该文件当前有一个段落。我将段落中的每个单词存储到一个列表中,然后使用以下方法迭代它们:

for(String word:words)

然而,这个迭代器遍历每个WORD。如果我的输入文件中有两个由空行分隔的段落,如何识别此for-loop迭代器下的空行?我的想法是,迭代单词显然不同于越过行,所以我不确定。

1 个答案:

答案 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