解析.csv文件时,我遍历文件的列标题并查看其中一个是否等于(忽略大小写)比较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()计算结果为falsewhile 两个字符串都有 value id。
观察调试器显示该header值是一个非紧凑字符串 (UTF-16),而该comparand值是一个紧凑字符串(ASCII):

这是默认行为还是错误?我怎样才能使equalsIgnoreCase评估达到true预期?
 开满天机
开满天机 
					繁花不似锦
 随时随地看视频慕课网APP
随时随地看视频慕课网APP
相关分类