如何在CSV文件中转义逗号

use*_*587 1 java csv

我有包含“,”的字符串,需要将其序列化/反序列化为 CSV。我已经能够正确地序列化它,但是当反序列化时,它总是错误的。这是我的 Java 代码

List<String> header = ...
test1,
test2, test3  <-- string contains comma ,
test4

List<String> updatedHeaderList = Lists.transform(headerList, new Function<String, String> () {
            public String apply(String input) {
                return  StringEscapeUtils.escapeCsv(input);
            }
        });

Joiner joiner = Joiner.on(separator);
        stringBuilder = joiner.appendTo(stringBuilder, updatedHeaderList);
        stringBuilder.append("\n");
        return stringBuilder.toString();
Run Code Online (Sandbox Code Playgroud)

当我检查序列化字符串时,它是: test1, "test2\, test3", test4 对我来说看起来很合适

然后我尝试反序列化它:

Splitter.on(",").splitToList(resultString) 
it returned list as 
test1, 
test2,
test3,
test4
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它反序列化回

test1
test2, test3
test4 
Run Code Online (Sandbox Code Playgroud)

谢谢

Dra*_*vic 6

根据RFC 4180

包含换行符 (CRLF)、双引号和逗号的字段应该用双引号括起来。

因此,有效的 csv 内容必须是:

test1
"test2, test3"
test4 
Run Code Online (Sandbox Code Playgroud)