如果数据包含逗号,如何将其存储在csv中?

时间:2012-03-30 12:42:40

标签: java algorithm

如果任务是从某些可能存在逗号的数据中创建一个csv文件,有没有办法这样做而不会混淆哪个逗号是分隔符以及哪个逗号是值的一部分?

显然,我们可以使用不同的分隔符,替换所有出现的内容,或者用其他内容替换原始逗号,但是出于这个问题的目的,我们可以说修改原始数据不是一个选项,而逗号是唯一的分隔符允许的。

你会如何处理这样的事情?是否更容易创建xls?你能推荐一下能很好地处理这个问题的java库吗?

6 个答案:

答案 0 :(得分:13)

真正的CSV阅读器应该能够处理这个问题;值应该用引号括起来,例如:

one,two,"a, b, c",four

... Section 2 of the RFC中的每个项目#6。

答案 1 :(得分:3)

虽然没有单一的CSV标准,但通常的惯例是用双引号括起包含逗号的条目(即")。

预设下一个问题:如果您的数据包含双引号该怎么办?在这种情况下,它们通常会替换为的双引号。

虽然我不想引用维基百科作为来源,但对于CSV格式化,它们确实有很好的综合basic rules and examples

答案 2 :(得分:2)

我要么使用不同的分隔符,要么使用像Apache POI这样的库。

答案 3 :(得分:1)

我认为最好的方法是使用Apache POI:http://poi.apache.org/ 您可以轻松创建XLS文档。

但是,如果您确实需要CSV而不是XLS,则可以使用引号括住该值。这也应该解决问题。

答案 4 :(得分:0)

通常,您使用,作为分隔符,使用'作为引号。所以你的价值看起来像是:

foo, 'bar, baz', iik, aje

答案 5 :(得分:0)

  

任务是创建一个csv文件

实际上这是一项不可能完成的任务,因为there is no such thing as "a CSV" file。不同的Microsoft产品使用了不同的(略有不同,我授予)格式,并将它们全部命名为“CSV”。由于大多数电子表格都可以读取delimiter separated value(DSV)文件,因此您可以更好地编写其中一种文件。