Java univocity-如何从所选字符解析字符串
我有下一个.csv文件: tt0102057,62010-06-19,胡克 TT01020592013-06-23热镜头 tt0102070,52010-02-10,哈德逊霍克 我需要将第一列的值解析为int值,而不是字符串。所以我需要跳过前两个符号,剩下的作为整数 如何在解析阶段使用univocity解析器实现这一点 代码工作并将数据保存到bean:Java univocity-如何从所选字符解析字符串,java,parsing,univocity,Java,Parsing,Univocity,我有下一个.csv文件: tt0102057,62010-06-19,胡克 TT01020592013-06-23热镜头 tt0102070,52010-02-10,哈德逊霍克 我需要将第一列的值解析为int值,而不是字符串。所以我需要跳过前两个符号,剩下的作为整数 如何在解析阶段使用univocity解析器实现这一点 代码工作并将数据保存到bean: BeanListProcessor<univMovie> rowProcessor = new BeanListProces
BeanListProcessor<univMovie> rowProcessor = new BeanListProcessor<univMovie>(univMovie.class);
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");
settings.setProcessor(rowProcessor);
settings.setHeaderExtractionEnabled(true);
CsvParser parser = new CsvParser(settings);
parser.parse(new FileReader("src/main/resources/movie.csv"));
List<univMovie> beans = rowProcessor.getBeans();
BeanListProcessor rowProcessor=新的BeanListProcessor(univMovie.class);
CsvParserSettings=新CsvParserSettings();
settings.getFormat().setLineSeparator(“\n”);
设置.setProcessor(rowProcessor);
设置。setHeaderExtractionEnabled(真);
CsvParser parser=新的CsvParser(设置);
parser.parse(新的文件阅读器(“src/main/resources/movie.csv”);
List bean=rowProcessor.getBeans();
您有很多选择:
最简单的方法是,在univMovie
类中,在将接收该数据的字段上方添加@Replace
注释:
@Parsed
@Replace(expression = "tt", replacement = "")
int yourField;
如果您的字段比较复杂,并且正则表达式不是一个简单/清晰的解决方案,那么您可以将@Parsed
注释放在一个方法上,该方法将为您设置该字段:
@Parsed
void setYourField(String value){
String cleanValue = someMethodToCleanYourValue(value);
yourField = Integer.parseInt(cleanValue);
}
您还可以告诉处理器使用以下命令转换多个字段:
rowProcessor.convertIndexes(Conversions.replace("tt", ""))
.set(0); //one or more indexes
希望这有帮助