如何让 CSVPrinter 引用带空格的字段?
How can I get a CSVPrinter to quote fields with spaces?
我正在使用 Apache Commons 中的 CSVPrinter class 来输出 CSV 文件。我希望发生的是,如果给定字段中包含任何 space,它会被封装在引号中。但如果它只是一长串数字,或者日期字符串,例如,则不需要引用这些。
不幸的是 QuoteMode enum 似乎非常有限;它提供以下四种选择:
ALL
引用所有字段。
MINIMAL
包含特殊字符的引号字段,例如定界符、引号字符或行分隔符中的任何字符。
NON_NUMERIC
引用所有非数字字段。
NONE
从不引用字段。
MINIMAL
选项似乎最接近我在这里要执行的操作,但是由于 space 字符不是行分隔符的一部分,所以它不起作用。有什么方法可以配置 CSVPrinter 对象以引用其中包含 space 的字段?
CSVPrinter 不是那么灵活,它也是 final
所以你不能覆盖打印实现。
我建议你找一个不同的 csv 库或者查看 CSVPrinter
的源代码并根据你自己的要求实现你自己的版本。 CSV 格式绝对不需要用空格引用字符串。任何符合该格式的实现都应该能够读取其中包含空格(而不是引号)的字符串。
我正在使用 Apache Commons 中的 CSVPrinter class 来输出 CSV 文件。我希望发生的是,如果给定字段中包含任何 space,它会被封装在引号中。但如果它只是一长串数字,或者日期字符串,例如,则不需要引用这些。
不幸的是 QuoteMode enum 似乎非常有限;它提供以下四种选择:
ALL
引用所有字段。MINIMAL
包含特殊字符的引号字段,例如定界符、引号字符或行分隔符中的任何字符。NON_NUMERIC
引用所有非数字字段。NONE
从不引用字段。
MINIMAL
选项似乎最接近我在这里要执行的操作,但是由于 space 字符不是行分隔符的一部分,所以它不起作用。有什么方法可以配置 CSVPrinter 对象以引用其中包含 space 的字段?
CSVPrinter 不是那么灵活,它也是 final
所以你不能覆盖打印实现。
我建议你找一个不同的 csv 库或者查看 CSVPrinter
的源代码并根据你自己的要求实现你自己的版本。 CSV 格式绝对不需要用空格引用字符串。任何符合该格式的实现都应该能够读取其中包含空格(而不是引号)的字符串。