Scanner.hasNext字符串在Java中匹配
我正在分析一个包含一些文本的文本文件,如下所示:Scanner.hasNext字符串在Java中匹配,java,regex,parsing,text,java.util.scanner,Java,Regex,Parsing,Text,Java.util.scanner,我正在分析一个包含一些文本的文本文件,如下所示: 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()) {
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();
}
然而,“如果”条件永远不会被命中,因为hasNext(p)试图找到“Level”的精确匹配,而忽略了“Level1”、“Level2”等词。我该如何考虑包含“水平”这个词的任何词? < P>我想你在寻找 试试这个:
Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
++lastLevelCreatedWas;
scanner.next();
}
您可以根据需要转到下一个“级别”令牌。我想您正在寻找 试试这个:
Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
++lastLevelCreatedWas;
scanner.next();
}
它会根据需要转到下一个“级别”标记。hasNext、getNext和其他类似方法仅在设置了分隔符时才起作用
调用
useDelimiter
方法将分隔符设置为扫描仪实例。hasNext、getNext和其他类似方法仅在设置分隔符时有效
调用
useDelimiter
方法将分隔符设置为扫描仪实例。是的,这就成功了。如果我想匹配一个字符串呢?我会使用Patter.compile(“Level”,Pattern.COMMENTS)之类的东西吗?您可能想使用scanner.useDelimiter(“Level\\d+”)
,意思是“级别”
,后面跟1-n位数字,如果您想使用完成此技巧的级别号。如果我想匹配一个字符串呢?我会使用Patter.compile(“Level”,Pattern.COMMENTS)之类的东西吗?您可能想使用scanner.useDelimiter(“Level\\d+”)代码>,表示“级别”
,后跟1-n位,如果您也想使用级别编号