如何正确解析CSV文件到2d数组?

时间:2010-09-01 13:26:18

标签: java parsing csv

我正在尝试将csv文件解析为2d数组,其中每一行都是一个数据条目,每列都是该条目中的一个字段。

一次完成这一操作简化了我的处理代码并将其与解析代码分开。

我尝试编写一个简单的解析器,使用String.Split以逗号分隔文件。我发现这是一种可怕的方法。它完全无法解析任何特殊情况,如双引号,换行符和其他特殊字符。

如我所述,将CSV文件解析为二维数组的正确方法是什么?

Java中的代码示例将不胜感激。 该数组可以是动态列表对象或向量或类似的东西,它只需要可以使用两个索引器进行索引。

2 个答案:

答案 0 :(得分:0)

看看Commons CSV

CSVParser parser = new CSVParser(new FileReader(file));
String[] line;
while ((line = parser.getLine()) != null) {
     // process
}

答案 1 :(得分:0)

如果您的文件包含双引号条目的字段,其中包含分隔符和包含换行符的字段,那么我怀疑它是一个真正的csv文件......正确的csv文件是这样的

1;John;Doe;engineer,manager
2;Bart;Foo;engineer,dilbert

虽然这是“别的东西”:

1;John;Doe;"engineer;manager"
2;Bart;Foo;
   "engineer,dilbert"

第一个示例是可解析的,每行都有String.split