我正在解析包含一些文本的文本文件,如下所示:
Level1
Some-text-here
Level2
Some-text-here
Level3
Some-text-here
我已经实现了解析文件的代码,并尝试计算文件中“Level”的出现次数。我就是这样做的:
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”等等。我怎么能让它考虑包含关键字“Level”的任何单词呢?
答案 0 :(得分:3)
我认为你正在寻找Scanner.useDelimiter
试试这个:
Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
++lastLevelCreatedWas;
scanner.next();
}
它可以根据需要转到下一个“级别”令牌。
答案 1 :(得分:2)
hasNext,getNext和其他类似方法仅在设置分隔符时有效。
调用useDelimiter
方法将分隔符设置为Scanner实例。