gpt4 book ai didi

java - 使用 SuperCSV 处理具有 NULL 值的列

转载 作者:行者123 更新时间:2023-11-30 07:04:56 33 4
gpt4 key购买 nike

有没有办法配置 SuperCSV 期望如何处理 NULL 值?这有时被处理为:

,,

或作为:

,NULL,

或作为:

,null,

但我似乎无法找到一种方法来配置 SuperCSV 期望如何处理这些,尤其是对于数字列。

最佳答案

,, 由 Super 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

您也可以通过使用单元处理器(可选 token )。为了使其更易于重用,您可以定义自己的处理器来简单地设置它。此处理器将检查 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())

关于java - 使用 SuperCSV 处理具有 NULL 值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27190425/

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