我使用以下代码来计算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;}
我做错了什么或者有更好的方法吗?
答案 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 *不情愿,这意味着它将以某种方式与'$'匹配的字符不匹配。