OpenCSV 如果我有'|'怎么办作为分隔符而不是 ','
OpenCSV what if I have '|' as a seperator instrad of ','
我的代码是这样的:
CSVReader reader = new CSVReaderBuilder(new FileReader("C://Users//himanshurai//eclipse-workspace//nike.csv")).withSeparator('|').withSkipLines(1).build();
List<TShirt> tShirtList = reader.readAll().stream().map(data -> {
//TShirt tShirt = new TShirt(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
TShirt tShirt = new TShirt();
tShirt.setId(data[0]);
tShirt.setName(data[1]);
tShirt.setColor(data[2]);
tShirt.setGender(data[3]);
tShirt.setSize(data[4]);
tShirt.setPrice(data[5]);
tShirt.setRating(data[6]);
tShirt.setIsAvailable(data[7]);
return tShirt;
}).collect(Collectors.toList());
tShirtList.forEach(System.out::println);
这是我的 CSV 文件:
我的代码显示索引越界错误。我认为这是因为 CSV 文件有'|'作为分隔符而不是“,”,我尝试使用 withSeperator('|') 方法,但它显示错误,如该方法未定义。还有其他方法吗?
好的。所以,除了原来的拼写错误,我认为你把 CSVParserBuilder
和 CSVReaderBuilder
类 搞混了。
根据 source code,您应该这样使用它们:
final CSVParser parser =
new CSVParserBuilder()
.withSeparator('\t')
.withIgnoreQuotations(true)
.build();
final CSVReader reader =
new CSVReaderBuilder(new StringReader(csv))
.withSkipLines(1)
.withCSVParser(parser)
.build();
请注意 withSeparator
方法在 CSVParserBuilder
而不是 CSVReaderBuilder
。
(仔细看...发现javadoc here 与源码不符,示例中显示withSeparator
,但方法列表中没有。去图。)
我的代码是这样的:
CSVReader reader = new CSVReaderBuilder(new FileReader("C://Users//himanshurai//eclipse-workspace//nike.csv")).withSeparator('|').withSkipLines(1).build();
List<TShirt> tShirtList = reader.readAll().stream().map(data -> {
//TShirt tShirt = new TShirt(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
TShirt tShirt = new TShirt();
tShirt.setId(data[0]);
tShirt.setName(data[1]);
tShirt.setColor(data[2]);
tShirt.setGender(data[3]);
tShirt.setSize(data[4]);
tShirt.setPrice(data[5]);
tShirt.setRating(data[6]);
tShirt.setIsAvailable(data[7]);
return tShirt;
}).collect(Collectors.toList());
tShirtList.forEach(System.out::println);
这是我的 CSV 文件:
我的代码显示索引越界错误。我认为这是因为 CSV 文件有'|'作为分隔符而不是“,”,我尝试使用 withSeperator('|') 方法,但它显示错误,如该方法未定义。还有其他方法吗?
好的。所以,除了原来的拼写错误,我认为你把 CSVParserBuilder
和 CSVReaderBuilder
类 搞混了。
根据 source code,您应该这样使用它们:
final CSVParser parser =
new CSVParserBuilder()
.withSeparator('\t')
.withIgnoreQuotations(true)
.build();
final CSVReader reader =
new CSVReaderBuilder(new StringReader(csv))
.withSkipLines(1)
.withCSVParser(parser)
.build();
请注意 withSeparator
方法在 CSVParserBuilder
而不是 CSVReaderBuilder
。
(仔细看...发现javadoc here 与源码不符,示例中显示withSeparator
,但方法列表中没有。去图。)