Java:计算文本文件/字符串中的空行

时间:2011-01-13 13:32:53

标签: java regex count

我使用以下代码来计算Java中的空行,但是这段代码返回的空行数比它们多。

int countEmptyLines(String s) {
int result=0;
Pattern regex = Pattern.compile("(?m)^\\s*$");
Matcher testMatcher = regex.matcher(s);
while (testMatcher.find())
{
  result++;
}
return result;}

我做错了什么或者有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

试试这个:

final BufferedReader br = new BufferedReader(new StringReader("hello\n\nworld\n"));
String line;
int empty = 0;
while ((line = br.readLine()) != null) {
  if (line.trim().isEmpty()) {
    empty++;
  }
}
System.out.println(empty);

答案 1 :(得分:0)

\ s匹配任何空格,即空格,制表符或回车符/换行符。

最简单的方法是计算连续EOL字符的链。我编写EOL,因为您需要确定哪个字符表示文件中的行尾。在Windows下,行末尾相当于回车符和换行符。在Unix下,这是不同的,因此对于在Unix下编写的文件,您的程序将不得不进行调整。

然后,计算行结束字符的每个连续数字,并且每次将此数字减1加到计数中。最后,您将获得空行数。

答案 2 :(得分:0)

我在午餐时找到了修复自己的正则表达式的方法:

Pattern regex = Pattern.compile("(?m)^\\s*?$");

'?'使\ s *不情愿,这意味着它将以某种方式与'$'匹配的字符不匹配。