Apache commons CSV:引用的输入不起作用

时间:2016-07-18 09:11:21

标签: java apache-commons-csv

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));
    }

}

我根本无法找到代码中遗漏的内容。

1 个答案:

答案 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));
    }

}