gpt4 book ai didi

java - Apache 通用 CSVParser/CSVRecord 为空字段返回 null

转载 作者:搜寻专家 更新时间:2023-11-01 02:40:21 25 4
gpt4 key购买 nike

全部

我有一个关于 Apache 通用 CSVParser/CSVRecord 的问题。查看下面的 CSV 文件:

Header1,Header2,Header3
"",,"L1C3"

CSVParser/CSVRecord 为前两列返回“”。在我的例子中,我想区分空字符串(“”)和空值。我可以设置一个配置让 CSVParser 为第二列返回 null 吗?

谢谢。

最佳答案

我用过这种格式:

CSVFormat.RFC4180.withFirstRecordAsHeader()
.withIgnoreSurroundingSpaces()
.withNullString("")

其中 2 个配置:

  1. ignore space - 修剪两边的任何值,如果全是空格,它将被修剪为空白
  2. null string - 将空格视为 null

这是一个示例用法:

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import org.junit.Test;

public class CsvParseTest {

@Test
public void testParseWillTrimAndConvertToNull() throws Exception {
String CSV_HEADER = "Name,MobileNo,Location";
String CSV_ROW_1 = "abc, ,australia"; // MobileNo is 3 whitespaces
CSVParser parse = CSVFormat.RFC4180.withFirstRecordAsHeader().withIgnoreSurroundingSpaces().withNullString("")
.parse(new BufferedReader(new StringReader(CSV_HEADER + "\n" + CSV_ROW_1)));

CsvRecord rec = parse.getRecords().get(0);
assertEquals("abc", rec.get("Name"));
assertNull(rec.get("MobileNo"));
assertEquals("australia", rec.get("Location"));
}
}

关于java - Apache 通用 CSVParser/CSVRecord 为空字段返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34734125/

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