【问题标题】:Java: Count empty lines in a text file/stringJava:计算文本文件/字符串中的空行
【发布时间】:2011-01-13 13:32:52
【问题描述】:

我正在使用以下代码计算 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 regex count


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        然后,计算每个连续的行尾字符数,每次将该数字减1 加到计数中。最后,您将获得空行数。

        【讨论】:

          猜你喜欢
          • 2012-10-12
          • 1970-01-01
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 1970-01-01
          • 2015-03-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多