lan*_*ava 5 java locale number-formatting opencsv
我正在使用OpenCSV来解析 csv 文件,这些文件在英国和德国运行时都需要工作。解析数字时,我们需要指定区域设置,以便 OpenCSV 知道哪个小数点分隔符(“.”表示英国,“,”表示德国)和千位分隔符(“,”表示英国,“.”表示德国)
执行此操作的一种选择是在每个@CsvBindByName实例上指定区域设置
public class MyRowBackingBean {
@CsvBindByName(column = "Quantity", locale = "en-GB")
@CsvNumber("#0.0#")
private BigDecimal quantity;
@CsvBindByName(column = "Amount", locale = "en-GB")
@CsvNumber("#0.0#")
private BigDecimal amount;
}
Run Code Online (Sandbox Code Playgroud)
我想避免为每个字段重复区域设置,因此我希望采用全局方式来执行此操作。
解析 csv 的代码如下所示:
char seperator = ';';
CSVParser parser = new CSVParserBuilder().withSeparator(separator).build();
MappingStrategy<R> mappingStrategy = new HeaderColumnNameMappingStrategy<>();
mappingStrategy.setType(MyRowBackingBean.class);
try (Reader reader = ...) {
CSVReader csvReader = new CSVReaderBuilder(reader).withCSVParser(csvParser).build();
CsvToBean<R> csvToBean = new CsvToBeanBuilder<R>(csvReader)
.withMappingStrategy(mappingStrategy)
.withFilter(...)
.build();
List<MyRowBackingBean> beans = csvToBean.parse()
...
}
Run Code Online (Sandbox Code Playgroud)
我查看了以下类,但找不到 setDefaultLocale(...) 方法或类似方法
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |