java - 如何使用 CSVWriter 仅在 csv 中嵌入的逗号字符串上使用双引号?
问题描述
这是我在输出 csv 中的预期结果格式:
header1,header2,header3,header4
monica,chandler,"rachel,ross",joey
我目前的结果:
策略1:
CSVWriter csvWriter = new CSVWriter(new FileWriter("D:/new.csv"));
String[] headers = new String[] { "header1", "header2", "header3", "header4"};
String[] arr = new String[] { "monica", "chandler", "rachel,ross", "joey"};
result:
"header1","header2","header2","header4"
"monica","chandler","rachel,ross","joey"
策略2:
CSVWriter csvWriter = new CSVWriter(new FileWriter("D:/new.csv"), CSVWriter.DEFAULT_SEPARATOR,CSVWriter.NO_QUOTE_CHARACTER, CSVWriter.DEFAULT_ESCAPE_CHARACTER, CSVWriter.DEFAULT_LINE_END);
String[] headers = new String[] { "header1", "header2", "header3", "header4"};
String[] arr = new String[] { "monica", "chandler", "rachel,ross", "joey"};
result:
header1,header2,header2,header4
monica,chandler,rachel",ross,joey
谁能建议我如何使用 OpenCSV 框架的 CSVWriter 来实现这一点?
解决方案
您可以使用CsvWriter::writeNext
也带 a 的方法boolean
来指示是始终使用引号,还是仅在需要时使用引号。
从文档中:
applyQuotesToAll
- 如果要引用所有值,则为真。False 仅将引号应用于包含分隔符、转义符、引号或换行符的值。
一个例子:
try (CSVWriter csvWriter = new CSVWriter(new FileWriter("new.csv"))) {
String[] headers = new String[]{"header1", "header2", "header3", "header4"};
String[] arr = new String[]{"monica", "chandler", "rachel,ross", "joey"};
csvWriter.writeNext(headers, false);
csvWriter.writeNext(arr, false);
}
结果:
header1,header2,header3,header4
monica,chandler,"rachel,ross",joey
推荐阅读
- linux - robomongo 无法连接到 docker mongo 容器
- c++ - 谁能告诉我以下 c++ 函数的时间复杂度是多少
- ios - 如何从 UIWebView 中删除脚本标签?
- swift - 如何从字符串中仅删除斜杠
- r - 如何强制多个 r 图具有相同长度的 x-ticks?
- oauth - 如何在 Azure DevOps 的构建管道中启用 Ouath 身份验证
- java - Android Studio 报错“Android 资源编译失败”
- c# - 如何将 blazor 服务器端的信号器入口点从 _blazor 更改为 _new_blazor
- api - 如何在 TestCafe 中发布顺序 POST 请求?
- machine-learning - 如何将世界坐标转换为 Shrec 17 和 DHG 等数据集的图像坐标