是否可以配置Univocity CSV解析器根据预定义的条件跳过一些行,例如单元格中的值?
例如,我有以下CSV文件:
name,city
Alex,NY
Mike,London
Dan,Sydney我想跳过处理(并从结果集中删除) city等于London的所有行。
我在文档中找不到这样的功能。请给我建议。
发布于 2020-04-19 06:53:22
不确定它是否是最好的解决方案,但是可以看看:
StringReader input = new StringReader(""
+ "name,city\n"
+ "Alex,NY\n"
+ "Mike,London\n"
+ "Dan,Sydney\n");
CsvParserSettings settings = new CsvParserSettings();
settings.setAutoConfigurationEnabled(true);
settings.setHeaderExtractionEnabled(true);
settings.getFormat().setLineSeparator("\n");
settings.selectFields("name", "city");
settings.setProcessor(new RowListProcessor() {
@Override
public void rowProcessed(String[] row, ParsingContext context) {
super.rowProcessed(row, context);
if (row[1].equalsIgnoreCase("London")) {
context.skipLines(1);
}
}
});
CsvParser parser = new CsvParser(settings);
parser.beginParsing(input);
Object[] row;
while ((row = parser.parseNext()) != null) {
System.out.println(Arrays.toString(row));
}
parser.stopParsing();发布于 2020-06-12 12:04:06
你可以在浏览文件时使用迭代器方法,跳过你不需要的行。有关更多详细信息,请参阅iterating approach。或者甚至是iterating using beans。
https://stackoverflow.com/questions/61250600
复制相似问题