我有一个带有头文件的csv文件,其顺序为fname,mname,lname和一个csv解析器来解析它。我正在逐行读取文件并按分隔符(",")进行拆分,并根据索引i< ll得到值0 = fname,1 = mname,2 = lname。
现在再次如果csv带有lname,fname和mname顺序的头文件,我必须再次更改代码。我想写一个通用的解析器,无论头的顺序如何,都存储各个字段中的值。有什么建议吗?
答案 0 :(得分:3)
我建议不要编写通用解析器并使用Apache Commons CSV。
由于您不知道列的顺序,请按照文档中的说明使用CSVFormat:
安全引用列
如果您的来源包含标题记录,则可以简化代码 并使用withHeader(String...)来安全地引用列 参数:
getrandom()
这会导致解析器读取第一条记录并将其值用作 列名。然后,调用其中一个CSVRecord get方法 字符串列名参数:
CSVFormat.EXCEL.withHeader();
这使您的代码不受CSV中列顺序更改的影响 文件。