FileHelpers嵌套引号和逗号 - 解析错误

tri*_*n86 1 c# csv filehelpers parsing

我正在尝试使用奇妙的FileHelpers库解析来自地狱的CSV文件.

它无法处理表格的一行:

"TOYS R"" US"," INC.""",fld2,fld3,"<numberThousands>","<numberThousands>","<numberThousands>",fld7,
Run Code Online (Sandbox Code Playgroud)

FileHelper非常擅长处理"千种"格式的数字字段(使用自定义格式化程序),即使用引号,尾随逗号等包装,但它会导致第一个字段出现问题.

"TOYS R"" US"," INC.""",fld2,...
Run Code Online (Sandbox Code Playgroud)

该字段包括嵌套引号和嵌套逗号.FileHelper不知道如何处理它并将其拆分为两个单独的字段,这些字段随后会引发异常.

有没有推荐的方法来处理这个?

sha*_*p00 8

首先,您需要选择引用所有字段.

[DelimitedRecord(",")] 
public class contactTemplate
{
  [FieldQuoted('"', QuoteMode.OptionalForBoth)]
  public string CompanyName;
  [FieldQuoted('"', QuoteMode.OptionalForBoth)]
  public string fld2;
  // etc...
}
Run Code Online (Sandbox Code Playgroud)

然后,您需要在BeforeReadRecord事件中使用其他内容(例如,单引号)替换转义分隔符.

var engine = new FileHelperEngine<MyFileHelpersSpec>();

engine.BeforeReadRecord += (sender, args) => 
    args.RecordLine = args.RecordLine.Replace(@"""", "'");
Run Code Online (Sandbox Code Playgroud)