0

我正在解析一个包含一些文本的文本文件,如下所示:

Level1
Some-text-here
Level2
Some-text-here
Level3
Some-text-here

我已经实现了解析文件并尝试计算文件中“级别”出现次数的代码。这就是我的做法:

Scanner scanner = new Scanner(new File(inPath));
Pattern p = Pattern.compile("Level");
while(scanner.hasNext()) {
    if(scanner.hasNext(p))  {
        ++lastLevelCreatedWas;
    }
    scanner.next();
}

然而,'if' 条件永远不会被击中,因为 hasNext(p) 试图找到“Level”的完全匹配并且会忽略“Level1”、“Level2”等单词。我应该如何让它考虑包含关键字“级别”的任何单词?

4

2 回答 2

3

我认为您正在寻找Scanner.useDelimiter

尝试这个 :

Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
    ++lastLevelCreatedWas;
    scanner.next();
}

同时根据需要转到下一个“级别”令牌。

于 2012-07-06T18:37:18.530 回答
2

hasNext、getNext 等类似方法只有在设置 delimiter 时才有效。

调用useDelimiter方法将分隔符设置为 Scanner 实例。

于 2012-07-06T18:38:33.710 回答