gpt4 book ai didi

java - univocity - 如何从选定的字符解析字符串

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:25 25 4
gpt4 key购买 nike

我有下一个 .csv 文件:

tt0102057, 6, 2010-06-19, Hook

tt0102059, 7 ,2013-06-23, Hot Shots!

tt0102070, 5, 2010-02-10, Hudson Hawk

我需要将第一列的值解析为 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();

最佳答案

你有很多选择:

最简单的方法是在 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

希望这有帮助

关于java - univocity - 如何从选定的字符解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55127565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com