我必须解析一个 csv 文件,该文件具有如下所示的字段:
("FOO, BAR BAZ", 42)
并产生两个字段:
FOO, BAR BAZ
42
我不确定如何使用 Apache Commons CSV 或 OpenCSV 简洁地做到这一点,所以我正在寻找一些指导。可能只是我不完全理解文档中提到org.apache.commons.csv.CSVFormat
的属性“quoteChar” ,但在我能找到的任何地方都没有清楚地解释过。如果是这样,如果您能指出我对该功能的更好文档,那将非常有帮助。
这是一个简短的示例,显示了我的问题以及我尝试过的内容和结果:
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"));
}
请注意,如果您从输入中排除括号,它可以正常工作。