Scanner hasNext(String pattern) falsely returns true
我编写了一个用于解析模板的扫描器实用程序。
考虑代码段:
1 2 3 4 5 6 7 8 9 10 11 12 | String input = FileUtils.readFileToString(new File("input file path")); Scanner scanner = new Scanner(input); scanner.useDelimiter(System.getProperty("line.separator")); System.out.println("Checking"); while(scanner.hasNext()) { System.out.print(scanner.hasNext("\\s*#[^\ ]*")); System.out.println(" :" + scanner.nextLine()); } |
输入文件内容:
1 2 3 4 5 6 7 8 9 |
注意:输入中不存在文件行末尾。
产出量:
1 2 3 4 5 6 7 8 9 | Checking true : # Line 1 true : ####################### true : true : # Check true : # Matched with spaces true : # false : false : |
我的问题是为什么第三行hasNext()返回true,即使它没有以'#'开头?
任何帮助,将不胜感激。
因为
Returns true if the next token matches the pattern constructed from the specified string.
空行不包含令牌,因此它从第4行找到下一个令牌。