我有包含“,”的字符串,需要将其序列化/反序列化为 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)
谢谢
根据RFC 4180:
包含换行符 (CRLF)、双引号和逗号的字段应该用双引号括起来。
因此,有效的 csv 内容必须是:
test1
"test2, test3"
test4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7451 次 |
| 最近记录: |