为什么即使使用“ \\ |”也不会拆分识别管道?

时间:2019-06-09 18:40:40

标签: java split java.util.scanner

我们正在尝试读取文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件的行表示Cola | 0,在拆分为数组后,我们遇到了array [1]的异常。如果正确分割行,那肯定应该存在。

当我们有一个if(line.contains“ \ |”)时,即使每行中都有管道,它也每次都会返回true。我们尝试使用whileInt代替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。相反,我们遇到了数组超出范围的异常。

1 个答案:

答案 0 :(得分:-1)

我相信,foreach循环的位置有问题。它不断尝试分割同一行,最终导致数组的索引不为1。