1
import java.io.IOException;
import java.io.StringReader;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;

単純な csv ファイルを Apache 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 に答える