我正在迭代 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/