Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:计算文本文件/字符串中的空行数_Java_Regex_Count - Fatal编程技术网

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

Java:计算文本文件/字符串中的空行数,java,regex,count,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;} 我做错了什么,或者有更好的

我使用下面的代码来计算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;}
我做错了什么,或者有更好的方法吗?

试试这个:

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

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

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


然后,对每行结束字符的连续数字进行计数,每次将该数字加上减去1的数字。最后,您将获得空行计数。

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

Pattern regex = Pattern.compile("(?m)^\\s*?$");
“?”使\s*不情愿,这意味着它将与“$”将匹配的字符不匹配