2011-01-13 121 views
2

我正在使用以下代码计算Java中的空行,但此代码返回的空行数量大于此数量。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;} 

我在做什么错或有没有更好的方法来做到这一点?

回答

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); 
0

\ S任何空白,这可以是一个空间,一个标签或一个回车/换行匹配。

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

然后,计算行结束字符的每个连续数字,并且每次将此数字减1加上一个计数。最后,你将有空行数。

0

我找到了一种方法来解决我自己的正则表达式,而我是在午餐:“?”

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

的令人不愿意,这意味着它会以某种方式与'$'匹配的字符不匹配。