代码之家  ›  专栏  ›  技术社区  ›  CodeFusionMobile

如何正确地将CSV文件解析为2d数组?

  •  1
  • CodeFusionMobile  · 技术社区  · 15 年前

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

    一次完成这一切简化并分离了我的处理代码和解析代码。

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

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

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Karl Johansson    15 年前

    看看 Commons CSV ?

    CSVParser parser = new CSVParser(new FileReader(file));
    String[] line;
    while ((line = parser.getLine()) != null) {
         // process
    }
    
        2
  •  0
  •   Andreas Dolk    15 年前

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

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

    虽然这是“其他东西”:

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

    第一个例子可以用 String.split 每一行。