【发布时间】:2016-11-14 21:57:26
【问题描述】:
我必须解析一个 csv 文件,该文件的字段如下所示:
("FOO, BAR BAZ", 42)
并产生两个字段:
FOO, BAR BAZ
42
我不确定如何使用 Apache Commons CSV 或 OpenCSV 简洁地做到这一点,所以我正在寻找一些指导。可能只是我不完全理解org.apache.commons.csv.CSVFormat 属性“quoteChar”which is touched on in the documentation,但在我能找到的任何地方都没有清楚地解释过。如果是这样,如果您能向我指出有关该功能的更好文档,那将非常有帮助。
这是一个简短的示例,显示了我的问题以及我尝试过的方法和结果:
String test = "(\"FOO, BAR BAZ\", 42)";
int numTries = 5;
CSVParser[] tries = new CSVParser[numTries];
tries[0] = CSVParser.parse(line, CSVFormat.DEFAULT.withRecordSeparator("\n"));//BAR BAZ"
tries[1] = CSVParser.parse(line, CSVFormat.DEFAULT.withQuote('"'));//BAR BAZ"
tries[2] = CSVParser.parse(line, CSVFormat.DEFAULT.withQuote(null));//BAR BAZ"
tries[3] = CSVParser.parse(line, CSVFormat.DEFAULT.withQuote('"').withQuoteMode(QuoteMode.NON_NUMERIC));//BAR BAZ"
tries[4] = CSVParser.parse(line, CSVFormat.DEFAULT.withRecordSeparator(")\n("));//BAR BAZ"
for(int i = 0; i < numTries; i++){
CSVRecord record = tries[i].getRecords().get(0);
System.out.println(record.get(1));//.equals("42"));
}
请注意,如果您从输入中排除括号,它会正常工作。
【问题讨论】:
标签: java csv noclassdeffounderror apache-commons apache-commons-csv