7

当使用 CsvHelper 库,特别是CsvReader.Read()函数时,有没有办法忽略空白记录和/或空格?

我需要返回原始string[]文件,但希望在解析库时可以执行一些清理功能。

我检查了 Github 并且CsvReader.Read()似乎使用了 SkipEmptyRecords但这对我不起作用,因为我有空格。

这是我的 csv 文件,它以 UTF8 编码,没有 BOM。

在此处输入图像描述

我已经尝试过 ASCII 编码,以防我遗漏了一些东西,但这也不起作用。
如果没人知道,我会和 Josh 聊天并提交一个带有修复的 git 请求。

参考:http: //joshclose.github.io/CsvHelper/

4

1 回答 1

5

我认为你最好的选择是自己修复图书馆。

问题是该Read方法使用SkipEmptyRecords设置和IsRecordEmpty方法来确定是否应该跳过一个字段:

while (this.configuration.SkipEmptyRecords && this.IsRecordEmpty(false));

但是 IsRecordEmpty() 方法并未完美实现以支持您的方案,因为它使用以下代码:

Enumerable.All<string>((IEnumerable<string>) this.currentRecord, new Func<string, bool>(string.IsNullOrEmpty));

这不起作用,因为您的字符串不是 null 或空的。在我看来,将 Trimming 与 SkipEmptyRecords 结合起来理论上可以工作:

 csv.Configuration.TrimFields = true;
 csv.Configuration.SkipEmptyRecords = true;

但是在检查该字段是否为空时再次不使用修剪,所以我很确定您唯一的选择是自己修复库并在 IsRecordEmpty() 方法中使用修剪或使用IsNullOrWhiteSpace而不是 IsNullOrEmpty。

于 2014-11-24T12:45:10.883 回答