当使用CsvHelper库,特别是CsvReader.Read()
函数时,有没有办法忽略空白记录和/或空格?
我需要返回原始string[]
,但希望,在使用库进行解析时,我可以执行一些清理功能。
我已经检查过Github而CsvReader.Read()
似乎使用了 SkipEmptyRecords ,但这对我来说并不适用,因为我有空白。
这是我的csv文件,它以UTF8编码,没有BOM。
我已经尝试过ASCII编码,以防万一我遗漏了一些东西,但那也没有用。
如果没有人知道我会和Josh聊天并提交一个带有修复的git请求。
答案 0 :(得分:4)
我认为你最好的办法是自己修理图书馆。
问题是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。