解析a时
.csv
迭代文件的列标题,看看其中一个是否等于(忽略大小写)comparand
id
String comparand = "id";
for (String header : headerMap.keySet()) {
if (header.equalsIgnoreCase(comparand)) {
recordMap.put("_id", csvRecord.get(header));
} else {
recordMap.put(header, csvRecord.get(header));
}
}
文件是使用
UTF-8
字符集:
Reader reader = new InputStreamReader(file.getInputStream(), StandardCharsets.UTF_8);
我使用的CSV解析器库是
Apache Commons CSV
:
CSVParser csvParser = CSVFormat.DEFAULT
.withDelimiter(delimiter)
.withFirstRecordAsHeader()
.withIgnoreEmptyLines()
.parse(reader);
Map<String, Integer> headerMap = csvParser.getHeaderMap();
不知怎么的上面
equalsIgnoreCase()
计算结果为
false
两个字符串都有
身份证件
.
header
值是非紧凑字符串(UTF-16),而
comparand
compact string
(ASCII码):
这是默认行为还是错误?我怎么做
equalsIgnoreCase
评估到
true