我有包含“,”的字符串,需要将其序列化/反序列化为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();
当我检查序列化的字符串是:
test1,“ test2 \,test3”,test4
在我看来合适
然后我试图反序列化它:
Splitter.on(",").splitToList(resultString)
it returned list as
test1,
test2,
test3,
test4
我如何反序列化它
test1
test2, test3
test4
谢谢
最佳答案
根据RFC 4180:
包含换行符(CRLF),双引号和逗号的字段应
用双引号引起来。
因此,有效的csv内容必须为:
test1
"test2, test3"
test4