【问题标题】:How to have double quotes only on embedded comma String in csv using CSVWriter?如何使用 CSVWriter 仅在 csv 中嵌入的逗号字符串上使用双引号?
【发布时间】:2021-05-18 18:40:22
【问题描述】:

这是我在输出 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 来实现这一点?

【问题讨论】:

    标签: java spring csv apache-camel opencsv


    【解决方案1】:

    您可以使用CsvWriter::writeNext 方法,该方法还采用boolean 来指示是始终使用引号,还是仅在需要时使用引号。

    来自documentation

    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
    

    【讨论】:

    • 谢谢,@andrewjames,我正在努力使用构造函数来实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2017-01-19
    • 2016-05-31
    • 2011-04-08
    • 2012-07-12
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多