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

时间:2016-02-23 19:21:18

标签: 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;
    }
}

提前感谢任何建议或解决方案。

到目前为止

1 个答案:

答案 0 :(得分:1)

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

    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处。