java中的通用csv解析器

时间:2015-06-12 09:58:57

标签: java parsing csv

我有一个带有头文件的csv文件,其顺序为fname,mname,lname和一个csv解析器来解析它。我正在逐行读取文件并按分隔符(",")进行拆分,并根据索引i< ll得到值0 = fname,1 = mname,2 = lname。

现在再次如果csv带有lname,fname和mname顺序的头文件,我必须再次更改代码。我想写一个通用的解析器,无论头的顺序如何,都存储各个字段中的值。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我建议不要编写通用解析器并使用Apache Commons CSV

由于您不知道列的顺序,请按照文档中的说明使用CSVFormat:

  

安全引用列

     

如果您的来源包含标题记录,则可以简化代码   并使用withHeader(String...)来安全地引用列   参数:

     

getrandom()

     

这会导致解析器读取第一条记录并将其值用作   列名。然后,调用其中一个CSVRecord get方法   字符串列名参数:

     

CSVFormat.EXCEL.withHeader();

     

这使您的代码不受CSV中列顺序更改的影响   文件。