我必须分析其具有可看起来像以下字段的CSV文件:忽略Apache Commons CSV/OpenCSV中引用字段中的分隔符?
("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"));
}
需要注意的是,如果你排除输入括号正常工作。
它会忽略其用引号括起来的分隔符默认? –
因为这就是我的问题所在。 –