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

}

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

4

1 回答 1

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

}

于 2016-07-18T09:29:09.120 回答