如何让CSVPrinter引用带空格的字段?

时间:2015-07-29 14:57:09

标签: java csv apache-commons

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

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

  1. ALL引用所有字段。
  2. MINIMAL引用包含特殊字符的字段,例如分隔符,引号字符或行分隔符中的任何字符。
  3. NON_NUMERIC引用所有非数字字段。
  4. NONE从不引用字段。
  5. MINIMAL选项似乎最接近我想要做的,但由于空格字符不是行分隔符的一部分,因此不起作用。有没有办法配置CSVPrinter对象引用其中包含空格的字段?

1 个答案:

答案 0 :(得分:0)

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

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