【问题标题】:How can I get a CSVPrinter to quote fields with spaces?如何让 CSVPrinter 用空格引用字段?
【发布时间】:2015-10-20 15:36:04
【问题描述】:

我正在使用来自 Apache Commons 的 CSVPrinter class 来输出 CSV 文件。我希望发生的是,如果给定字段中包含任何空格,则它会被封装在引号中。但如果只是一长串数字或日期字符串,则不需要引用。

不幸的是,QuoteMode enum 似乎非常有限;它提供以下四种选择:

  1. ALL 引用所有字段。
  2. MINIMAL 引用包含特殊字符(如分隔符、引号字符或行分隔符中的任何字符)的字段。
  3. NON_NUMERIC 引用所有非数字字段。
  4. NONE 从不引用字段。

MINIMAL 选项似乎最接近我在这里想要做的,但由于空格字符不是行分隔符的一部分,所以它不起作用。有什么方法可以配置 CSVPrinter 对象来引用其中包含空格的字段?

【问题讨论】:

    标签: java csv apache-commons


    【解决方案1】:

    CSVPrinter 不是那么灵活,它也是final,所以你不能覆盖打印实现。

    我建议你找一个不同的csv库或者查看CSVPrinter的源代码,根据自己的需求实现自己的版本。不过,用空格引用字符串绝对不是 CSV 格式的要求。任何符合该格式的实现都应该能够读取其中包含空格(而不是引号)的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多