【问题标题】:check substring with spaces in scanner在扫描仪中检查带有空格的子字符串
【发布时间】:2014-05-13 12:55:54
【问题描述】:

我正在读取一个包含多行的文件,该文件的内容示例是:

Reader : INFO - LOOP with sapces : 1
Reader : INFO - LOOP with sapces : 2
Reader : INFO - LOOP with sapces : 17
Reader : INFO - LOOP with sapces : 201

我要做的是让我的程序读取包含带空格的 LOOP 的行数。

这是我的代码:

Scanner fileScan = new Scanner(file);
int iterated = 0;

while (fileScan.hasNext())
    {

        String somestring = fileScan.next();

        if (somestring.matches(".*LOOP\\swith\\sspaces.*"))
            { iterated++; }

    }
    }

    System.out.println("number of times found is: "+iterated);

我的问题是我的程序是 0 用于 int 迭代。

【问题讨论】:

  • 我们能知道您为什么要使用matches 而不是contains 吗?您搜索的子字符串LOOP with spaces 可以有不同的形式还是固定的?

标签: java regex java.util.scanner


【解决方案1】:

我想做的是让我的程序读取 包含带空格的 LOOP 的行

像这样尝试。

if (scanner.nextLine().contains("LOOP with spaces"))
{ iterated++; }
  • nextLine()

此方法将读取整行。

String line=scanner.nextLine();
  • 下一个()

这将返回文件中的下一个令牌意味着 next() 只能读取输入直到空格。

String token=scanner.next();

【讨论】:

    【解决方案2】:

    Scanner#next() 返回下一个元素直到 delimiter 模式 的下一个实例,这是默认的"\\s",因此它读取下一个空格,而不是行。

    如果将hasNext()next() 更改为hasNextLine()nextLine(),则分隔符是系统换行符,因此它会一次读取整行。

    【讨论】:

      猜你喜欢
      • 2014-12-29
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多