java - CSV - java.util.scanner 跳过一个值并选择下一个值

标签 java csv java.util.scanner

如果有一个小问题,希望你能告诉我一个更好的方法来解决它。因此,我正在使用扫描仪类读取 CSV 文件。

scanner.useDelimiter("~");

while (scanner.hasNext()) {
    if (scanner.next();.equalsIgnoreCase("einfuegen_pdf")) {
        //then give me the next element, which is not ""
    }
}

在如下所示的 CSV 文件中,我正在查找 “Einfuegen_PDF” 之后的值。在本例中:$Datei{MR-Test-PDF-01}

~~~Einfuegen_PDF~~$Datei{MR-Test-PDF-01}~L~M~0~0~0~0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

到目前为止,我的解决方案有效,但我正在寻找一种更优雅的方法来处理这个问题。

scanner.useDelimiter("~");

List<String> csvContent = new ArrayList<>();
int count = 0;
boolean hit = false;

while (scanner.hasNext()) {
    String element = scanner.next();

    if (element.equalsIgnoreCase("einfuegen_pdf")) {
        hit = true;
        count = 1;
    } else if (hit && count == 1) {
        count = 2;
    } else if (hit && count == 2) {
        csvContent.add(element);
        hit = false;
        count = 0;
    }
}

预先感谢您提供任何建议或解决方案。

到目前为止

最佳答案

扫描每行并尝试以下操作如何。

    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        String[] tokens = line.split("~");
        String pdf = tokens[3];
        if (pdf.equalsIgnoreCase("einfuegen_pdf")) {
            csvContent.add(tokens[5]);
        }
    }

这将减少循环的迭代次数。 PDF 文件位于数组索引 3 处,您要查找的 CSV 内容位于索引 5 处。

关于java - CSV - java.util.scanner 跳过一个值并选择下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586296/

相关文章:

Python 3 csv.reader 空响应

jQuery dataTables CSV 服务器数据

ruby - 使用 Ruby 中的转换器从 CSV 列中删除回车符

Java程序不喜欢这个词 "Scanner"

java - 不知从何而来的电话权限?

java - 正在使用变量?

java - 无法使用 getGraphics() 方法一次性加载图像

java - ArrayList 与 jList 的自定义类

java - 如何在一行中准确输入五个字符的字符串,然后输出每个字符之间有空格的字符串? java

java - next() 和 nextLine() 都无法帮助存储带有空格的名称