Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java univocity-如何从所选字符解析字符串_Java_Parsing_Univocity - Fatal编程技术网

Java univocity-如何从所选字符解析字符串

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

我有下一个.csv文件:

tt0102057,62010-06-19,胡克

TT01020592013-06-23热镜头

tt0102070,52010-02-10,哈德逊霍克

我需要将第一列的值解析为int值,而不是字符串。所以我需要跳过前两个符号,剩下的作为整数

如何在解析阶段使用univocity解析器实现这一点

代码工作并将数据保存到bean:

    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
希望这有帮助