我正在遍历一个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()
之类的方法 最佳答案
如果将使用CSVParser
构造的CSVFormat.EXCEL.withHeader().parse(in)
对象存储到变量中,则可以使用方法getHeaderMap()
查找所需标头的索引。然后,可以使用这些索引代替标题名称来查找字段(实际上,这也是执行查找的更有效方法)。
一种方法是这样的:
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/