【发布时间】:2016-06-21 03:01:55
【问题描述】:
我正在编写一个工具,它接受一个 csv 文件的输入并创建一个新的 csv 文件作为输出,并修改了一些字段。在某些情况下,输入 csv 文件在逗号前后嵌入了引号,例如:“a”、“b”、“c”,而在其他情况下,我直接使用 a、b、c。我遇到的问题是,如果输入的 csv 文件嵌入了引号,那么我希望生成的 csv 文件应该具有相同的嵌入引号。我知道我可以在 CSVWriter 的构造函数中控制此设置,如下所示:
CSVWriter writer =
new CSVWriter(new FileWriter(csv), ',', CSVWriter.NO_QUOTE_CHARACTER)
但是如何检测我们有哪种情况呢?我是否应该编写一个计算引号字符数的正则表达式并将其与 的计数进行比较,看看它是否超过两倍?例如 "a","b","c" 有 6 个引号和 2 个逗号。
【问题讨论】:
-
通常只有带逗号的字符串被引用。例如。 Hello, World 可能会显示为
"Hello, World",但 Hello World 不会。我怀疑你应该控制每个字段的报价。 -
实际上在我拥有的文件中,要么整行都嵌入了引号,要么根本没有嵌入引号
-
是每行还是每个文件的问题?另外,你能有一排引号不算嵌入吗?
-
问题在于每个文件,如果输入 csv 文件的所有行都嵌入了引号,那么我希望输出 csv 文件具有相同的模式,即保留这些嵌入的引号
-
为什么不使用现有的库,如 opencsv.sourceforge.net 或 commons.apache.org/proper/commons-csv ?它已经为您处理好了。