FileHelper转义分隔符

时间:2013-08-30 09:44:59

标签: c# csv filehelpers

我正在使用FileHelper 2.0来解析我的csv数据。 filehelper有没有可以正确处理转义分隔符的选项?它可以将字段标识为数据而不是分隔符。

我们的csv格式: 使用\,

转义逗号(,)

示例数据:

  

姓名,姓氏

     

尼科\,LE,opeka

当前代码:

[DelimitedRecord(",")] 
public class contactTemplate
{
  public string firstName;
  public string lastName;
}

如何获得firstName = nico,le和lastName = opeka。 FileHelpers按逗号分割,现在返回:

  

firstName - >尼科\

     

lastName - > ,LE,opeka

1 个答案:

答案 0 :(得分:5)

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

[DelimitedRecord(",")] 
public class contactTemplate
{
  [FieldQuoted('"', QuoteMode.OptionalForBoth)]
  public string firstName;
  [FieldQuoted('"', QuoteMode.OptionalForBoth)]
  public string lastName;
}

然后,您需要引用包含转义字符的所有字段。您可以使用BeforeReadRecord事件。

FileHelperEngine engine = new FileHelperEngine(typeof(contactTemplate)); 
engine.BeforeReadRecord += BeforeEvent; 

private void BeforeEvent(EngineBase engine, BeforeReadRecordEventArgs e)
{
    if (e.RecordLine.Contains("\"))
    {
        string[] parts = SplitStringRespectingEscapeCharacter(eRecordLine);
        parts = QuoteAnyPartsWhichContainEscapeCharacter(parts);
        parts = RemoveAnyEscapeCharacters(parts);
        e.RecordLine = parts.Join;
    } 
}

您可以找到一些代码来开始使用自定义拆分功能here