是否有一种方法来配置SuperCSV期望如何处理空值?有时将其处理为:
,,或作为:
,NULL,或作为:
,null,但我似乎无法找到一种方法来配置SuperCSV希望如何处理这些问题,特别是对于数字列。
发布于 2014-11-28 23:09:49
,,是由超级CSV自动处理。例如,以下内容:
@Test
public void testNullsWithDefaultBehaviour() throws IOException{
String csv = ",null,NULL\n";
try (ICsvListReader reader = new CsvListReader(new StringReader(csv),
CsvPreference.STANDARD_PREFERENCE)){
List<String> values = reader.read();
for (String v : values){
System.out.println(v == null);
}
}
}将打印
true
false
false通过使用单元处理器( "NULL"和Token的组合),您也可以让它处理"null"和Optional。为了使它更可重用,您可以定义您自己的处理器,它可以简单地设置它。该处理器将检查null,然后是"null",然后是"NULL",如果找到匹配,则返回null,否则它将返回未更改的值。
public class CustomOptional extends Optional {
public CustomOptional(){
super(new Token("null", null, new Token("NULL", null)));
}
public CustomOptional(final CellProcessor next) {
super(new Token("null", null, new Token("NULL", null, next)));
}
}然后,您可以使用此处理器。
@Test
public void testNullsUsingProcessors() throws IOException{
String csv = ",null,NULL\n";
CellProcessor[] processors = {new CustomOptional(),
new CustomOptional(),
new CustomOptional()};
try (ICsvListReader reader = new CsvListReader(new StringReader(csv),
CsvPreference.STANDARD_PREFERENCE)){
List<Object> values = reader.read(processors);
for (Object v : values){
System.out.println(v == null);
}
}
}它将打印
true
true
true要处理数值列,只需将其链接在一起,就像使用Optional一样
new CustomOptional(new ParseInt())https://stackoverflow.com/questions/27190425
复制相似问题