如果有一个小问题,希望你能告诉我一个更好的方法来解决它。因此,我正在使用扫描仪类读取 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/