如果包含"则无法解析csv "

时间:2014-10-28 18:25:46

标签: java csv

我有一个csv文件,其值低于:

10〜30〜 “映射~~值” 〜40〜50

当我尝试使用分隔符〜

解析此csv时

我得到的值如下:

10,30,映射,值,40,50

但实际结果如下:

10,30,映射~~值,40,50(当任何内容用双引号括起来时,它应该取总值)

任何人都可以在这方面帮助我。

2 个答案:

答案 0 :(得分:0)

虽然CSV文件看起来很简单,但它们非常复杂,因为它们需要处理分隔符是值的一部分(在您的情况下使用引号)或甚至在字符串中出现引号(通常编码为double)的情况引号)。因此,简单的String.split不足以解析CSV文件。 有几个库提供CSV阅读器,使用其中之一。例如提到的openCSV,或者来自Apache的那个:http://commons.apache.org/proper/commons-csv/

答案 1 :(得分:0)

试试这个。

假设line是CSV文件中的一行。以下代码将正确地拆分为项目:

String[] items = line.trim().split(',(?=([^\"]*\"[^\"]*\")*[^\"]*$)')