java - 为什么即使使用“\\|”也不会拆分识别管道?
问题描述
我们正在尝试读取文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件中的一行是 Cola|0,在拆分为数组后,我们得到了数组 [1] 的越界异常。如果线路被正确分割,那肯定存在。
当我们有一个 if(line.contains"\|") 时,即使行中有管道,它每次都返回 true。我们尝试在 while 中使用 nextInt 而不是 nextLine,但它立即返回 false 并结束了 while(它不应该这样做,因为肯定有数字)。
我们还尝试使用带有 indexOf("\|")+1 的 substring 到最后,但它仍然不起作用。为什么它不接管?
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 的数组。
推荐阅读
- javascript - 反应进度条
- guice - 我可以在没有@Singleton 的情况下使用@Provides 吗?
- java - 如何从 Azure Java 函数返回 2D BufferedImage?
- javascript - 从本地文件夹而不是 .js 中的网站加载图像
- algorithm - 如何在不使用蛮力的情况下找到给定不完整数字的最小倍数
- c# - ASP.NET Core Web API 将所有枚举作为第 0 个选项发布
- powershell - 如何使用 VSCode 中详述的 -OutPut 快速运行 Pester?
- javascript - D3js 数据格式
- javascript - 如果您没有在 iOS Safari 上点击按钮,则单击事件不会触发
- javascript - 如何在Materialize CSS中动态匹配选择输入到选择的选项?