Java 为什么即使使用“\\\\”,Split也无法识别管道?
我们正在尝试读取一个文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件的行显示Cola | 0,在拆分到数组之后,我们得到了数组[1]的越界异常。如果线被正确地分割,那肯定存在 当我们有一个ifline.contains \|时,它每次都返回true,即使管路中有管道。我们尝试在while中使用nextInt而不是nextLine,但它立即返回false并结束了while,这是它不应该做的,因为肯定有数字 我们还尝试在末尾使用indexOf\|+1的子字符串,但仍然不起作用。为什么它不接管子Java 为什么即使使用“\\\\”,Split也无法识别管道?,java,split,java.util.scanner,Java,Split,Java.util.scanner,我们正在尝试读取一个文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件的行显示Cola | 0,在拆分到数组之后,我们得到了数组[1]的越界异常。如果线被正确地分割,那肯定存在 当我们有一个ifline.contains \|时,它每次都返回true,即使管路中有管道。我们尝试在while中使用nextInt而不是nextLine,但它立即返回false并结束了while,这是它不应该做的,因为肯定有数字 我们还尝试在末尾使用indexOf\|+1的子字符串,但仍然不起作用。为什
try (Scanner fileScanner = new Scanner(file)) {
while (fileScanner.hasNextLine()) {
String line = fileScanner.nextLine();
if (!line.contains("$")) {
for (String item : productsSold.keySet()) {
String[] productDetails = line.split("\\|");
productsSold.put(item, Integer.parseInt(productDetails[1]));
Cola | 0应使数组的第二行为0。相反,我们得到的是数组的越界异常。我相信,foreach循环的位置有问题。它不断尝试拆分同一行,最终导致数组的索引不在1。是否尝试打印该行?里面有什么?此外,是否每行都包含一个|?Cola | 0.split\\\|。当使用indexOf和contains时,不需要逃逸管道:indexOf |和contains |是您要使用的。@Ivar,大多数行中都有管道。我认为for each循环相对于行实例化的位置导致了拆分和越界异常问题。@AndyTurner,谢谢!我们成功地使用了contains,它帮助清理了if语句逻辑中的漏洞!这是一个简单的编程错误,对其他任何人都没有用处,因为他们甚至不可能找到这个问题/答案。所以请删除这个问题。