检查扫描仪中带空格的子字符串

时间:2014-05-13 12:55:55

标签: java regex java.util.scanner

我正在阅读一个有多行的文件,该文件内容的例子是:

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

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

2 个答案:

答案 0 :(得分:3)

  

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

尝试这样。

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

此方法将读取整行。

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

这将以文件方式返回下一个标记 next()只能读取输入直到空格。

String token=scanner.next();

答案 1 :(得分:1)

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

如果您将hasNext()next()更改为hasNextLine()nextLine(),则分隔符是系统换行符,因此它会立即读取整行。< / p>