java - 读取 CSV 记录,同时忽略尾随空格

标签 java apache-poi

我正在迭代 csv 文件并按标题提取数据。但我想允许尾随空格并仍然识别标题。

例如 Header1,Header2,Header3 仍应被识别为 Header1 ,Header2,Header3

我的代码...

final Reader in = new BufferedReader(new InputStreamReader(csv));

for (CSVRecord record : CSVFormat.EXCEL.withHeader().parse(in)) {
    try {
        final MyObject mo = new MyObject();
        mo.setHeader1(record.get("Header1"));
        mo.setHeader2(record.get("Header2"));
        mo.setHeader3(record.get("Header3"));
        ....
    }catch(){
       .... 
    }
}

但是这当然只会找到完全匹配的Header1(没有尾随空格)。

我找不到任何类似 record.getIgnoreSpace() 或类似方法的方法

最佳答案

如果将使用 CSVFormat.EXCEL.withHeader().parse(in) 构造的 CSVParser 对象存储到变量中,则可以使用方法 getHeaderMap() 查找所需 header 的索引。然后可以使用这些索引代替 header 名称来查找字段(这实际上也是执行查找的更有效方法)。

一种方法是这样的:

CSVParser parser = CSVFormat.EXCEL.withHeader().parse(in);
Map<String, Integer> headerMap = parser.getHeaderMap();

int header1Index = -1;
int header2Index = -1;
for (Map.Entry<String, Integer> entry : headerMap.entrySet()) {
    String name = entry.getKey();
    int index = entry.getValue();

    switch (name.trim()) {
    case "Header1":
        header1Index = index;
        break;
    case "Header2":
        header2Index = index;
        break;
    }
}

for (CSVRecord record : parser) {
    ...
    mo.setHeader1(record.get(header1Index));
    ...
}

关于java - 读取 CSV 记录,同时忽略尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394373/

相关文章:

java - 如何在 java 中使用 setText 更新 FXML 按钮 - 当它返回 java.lang.NullPointerException 错误时?

java - 在 Linux 中进行 Mysql 数据库备份显示 java.io.IOException :

java - 使用paypal api时无法建立SOAP连接

java - Apache POI : separate logic for xls and xlsx?

java - 将结果记录到 Excel 文件(apache poi),如果我在程序仍在运行时打开文件,则会出现错误

java - 在代号一中动态填充列表

java - 如何为信用卡生成随机数

java - Apache-poi:想要遍历Excel列并对下一列中存在的相应值求和

excel - JAVA - 写入 Excel 文件时出现 Apache POI OutOfMemoryError

java - 在 XWPFTableCell (docx) 中设置表格的列宽