import java.io.IOException;
import java.io.StringReader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
我尝试用Apache CSV解析器解析一个简单的csv文件。只要我不使用引号,它就可以正常工作。当我尝试在输入中添加引号
时"a";42
它给了我错误:
invalid char between encapsulated token and delimiter
这是一个简单,完整的代码:
public class Test {
public static void main(String[] args) throws IOException {
String DATA = "\"a\";12";
CSVParser csvParser =
CSVFormat.EXCEL
.withIgnoreEmptyLines()
.withIgnoreHeaderCase()
.withRecordSeparator('\n').withQuote('"')
.withEscape('\\').withRecordSeparator(';').withTrim()
.parse(new StringReader(DATA));
}
}
我根本无法找到代码中遗漏的内容。
答案 0 :(得分:3)
问题是如此微不足道,我错过了它。
我使用withRecordSeparator
代替withDelimiter
来设置字段分隔符。
这符合我的预期:
public class Test {
public static void main(String[] args) throws IOException {
String DATA = "\"a\";12";
CSVParser csvParser =
CSVFormat.EXCEL
.withIgnoreEmptyLines()
.withIgnoreHeaderCase()
.withRecordSeparator('\n').withQuote('"')
.withEscape('\\').withDelimeter(';').withTrim()
.parse(new StringReader(DATA));
}
}