gpt4 book ai didi

java - 正确的正则表达式以防止 Java 扫描器返回零长度字符串

转载 作者:行者123 更新时间:2023-12-01 05:31:05 25 4
gpt4 key购买 nike

我正在尝试从文件中读取各个数字,其中有多行数字以逗号分隔。我正在执行此操作的 java 代码是:

try {
Scanner fileScanner = new Scanner(new FileReader(unsolvedBoardLocation));
Pattern myPattern = Pattern.compile("[,\\r\\n]");
System.out.println(myPattern.pattern());
fileScanner.useDelimiter(myPattern);

while(fileScanner.hasNext()) {
int i = fileScanner.nextInt();
System.out.print(i);

}
}
catch(IOException ex) {
Logger.getLogger(SudokuBoard.class.getName()).log(Level.SEVERE, null, ex);
}

我正在读取的文件内容没有空格,如下所示:

8,0,0,9,3,0,0,0,2
0,0,9,0,0,0,0,4,0

自从我在 Windows 中创建文本文件以来,我知道 2 后面有一个\r\n。在程序的原始版本中,扫描仪返回 2\r\n,因此我添加了\r\n到分隔符来尝试防止这种情况,但我仍然遇到问题。我收到一个 InputMissmatchException。完整的堆栈跟踪是:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at my.puzzle.sudoku.SudokuBoard.<init>(SudokuBoard.java:31)
at my.puzzle.sudoku.Sudoku.main(Sudoku.java:8)
Java Result: 1

我认为我收到此异常的原因是因为扫描仪在 2 结束后返回“”。这不是 nextInt() 所期望的,因此抛出错误。我试图阻止这种情况,但我不确定如何仅使用正则表达式来做到这一点。由于我正在生成输入文件,因此我可以简单地使用空格对其进行格式化并使其正常工作。我还可以将每个标记作为字符串读取,并检查该字符串是否可以读取为有效数字,如果不能则移至下一个标记;然而,出于我自己的学习目的,我想知道如何仅使用正则表达式来完成它。我已经读过关于正则表达式的java教程,但我以前从未使用过正则表达式,并且遇到了困难。

要明确的是,我的问题是“如何防止正则表达式在这种情况下返回零长度的字符串。”

如果我能得到任何帮助,我将不胜感激。提前致谢!

最佳答案

$ 结束正则表达式或尝试 \d

关于java - 正确的正则表达式以防止 Java 扫描器返回零长度字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com