java - 我怎样才能告诉 SuperCSV 不要将空字符串映射到 null

标签 java csv supercsv

我正在使用 ICsvListReader 和 ICsvListWriter 来读写 csv 文件。
发现csv文件中的空字符串转为null后输出
我怎样才能避免这种情况发生。我试过创建一个新的 CellProcessor:

private CellProcessor[] getProcessors(int columnNumber){

        CellProcessor[] processors = new CellProcessor[columnNumber];
        for (int i=0; i< columnNumber; i++){
            processors[i] = new ConvertNullTo("");
        }
        return processors;
    }

但是还是不行。

有什么办法可以改变这个设置吗?

最佳答案

空列不需要在 CSV 中转义(因此默认情况下 Super CSV 不会在空字符串周围应用引号),但如果您希望始终应用引号,则可以更改 QuoteMode在 super CSV 中。

这是一个 recent example在 SO 上证明了这一点。

更新:如果您只想引用空字符串,请确保您写入的值是空字符串(即您可能需要使用 ConvertNullTo("")), 然后使用下面的引用方式:

public class QuoteEmptyString implements QuoteMode {

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean quotesRequired(String csvColumn, CsvContext context, 
        CsvPreference preference) {
        return "".equals(csvColumn);
    }

}

关于java - 我怎样才能告诉 SuperCSV 不要将空字符串映射到 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21592097/

相关文章:

java - 为什么 String.equals 对于不相同(但相等)的 String 对象要慢得多?

html - 如何使用awk根据其他字段求和字段

java - 在java中合并多个csv文件

java - 数据结构推荐

java - 错误: org. hibernate.PropertyNotFoundException : no appropriate constructor in class: com. a.offering.dto.SellerDetailsDto

python - 使用来自单独表的 ID 对从表中检索行

regex - 如何在 Perl 中只编写文件的某些行?

java - 使用 super-csv 将列添加到现有 csv 文件

java - 如何在supercsv getHeader中使用编码

java - 使用 DB2 自动增量获取异常