Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scanner.hasNext字符串在Java中匹配_Java_Regex_Parsing_Text_Java.util.scanner - Fatal编程技术网

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位,如果您也想使用级别编号