Apache Commons CSV - 不区分大小写 headers?
Apache Commons CSV - case insensitive headers?
Apache CSV 实现中是否有 built-in 功能以在读取 csv 时忽略 header 大小写?
前段时间我们实现了将 CSV 导出文件转换为 SQL 的实用程序。为此,我们选择了 Apache CSV。到目前为止一切都很好,但现在我们收到了更改请求。
我们处理的所有 CSV 文件都必须包含 headers,现在我们应该以不区分大小写的方式读取那些 headers,这样我们的用户就不必费力观看了如果他们创建的 CSV 符合我们的 header 案例要求。
代码示例:
for (CSVRecord record : subsidiaryRows) {
String name = record.get(Data.NAME));
其中 Data.NAME 是
public static final String NAME = "Name";
当用户在他的 CSV 中使用 "name" 作为列 header 而不是使用大写 "N".
的 "Name" 时,问题显然会出现
我已经关注了 API 和来源,但找不到任何东西。有没有办法强制 CSVRecord 使用 CaseInsensitiveMap 进行映射或类似的东西?
我没有使用过 Apache CSV,但有以下帮助
Map<String, String> nodeMap =
new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
我认为您必须为了方便而处理 csv headers,在使用 apache-commons-csv
解析 CSV 文件之前,您可以使用 RandomAccessFile 来覆盖第一行中的大小写( headers)
//convert headers to my 'known' format (ie: lowercase)
RandomAccessFile raf = new RandomAccessFile("C:\test.csv", "rw");
String firstLine = raf.readLine();
raf.seek(0);
raf.writeBytes(firstLine.toLowerCase());
//your normal process to parse CSV with commons csv
PS:我认为很难以其他方式实现这一点,因为它是一个封闭的 api(每个 class 都是最终的,而 headers 映射returns 一份内部 headers 地图)
此功能已作为 CSV-159
添加到 Apache Commons CSV 1.3
已提交修订版 1708685。
Apache CSV 实现中是否有 built-in 功能以在读取 csv 时忽略 header 大小写?
前段时间我们实现了将 CSV 导出文件转换为 SQL 的实用程序。为此,我们选择了 Apache CSV。到目前为止一切都很好,但现在我们收到了更改请求。
我们处理的所有 CSV 文件都必须包含 headers,现在我们应该以不区分大小写的方式读取那些 headers,这样我们的用户就不必费力观看了如果他们创建的 CSV 符合我们的 header 案例要求。
代码示例:
for (CSVRecord record : subsidiaryRows) {
String name = record.get(Data.NAME));
其中 Data.NAME 是
public static final String NAME = "Name";
当用户在他的 CSV 中使用 "name" 作为列 header 而不是使用大写 "N".
的 "Name" 时,问题显然会出现我已经关注了 API 和来源,但找不到任何东西。有没有办法强制 CSVRecord 使用 CaseInsensitiveMap 进行映射或类似的东西?
我没有使用过 Apache CSV,但有以下帮助
Map<String, String> nodeMap =
new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
我认为您必须为了方便而处理 csv headers,在使用 apache-commons-csv
解析 CSV 文件之前,您可以使用 RandomAccessFile 来覆盖第一行中的大小写( headers)
//convert headers to my 'known' format (ie: lowercase)
RandomAccessFile raf = new RandomAccessFile("C:\test.csv", "rw");
String firstLine = raf.readLine();
raf.seek(0);
raf.writeBytes(firstLine.toLowerCase());
//your normal process to parse CSV with commons csv
PS:我认为很难以其他方式实现这一点,因为它是一个封闭的 api(每个 class 都是最终的,而 headers 映射returns 一份内部 headers 地图)
此功能已作为 CSV-159
添加到 Apache Commons CSV 1.3已提交修订版 1708685。