6

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

我们的 csv 格式:转义逗号 (,) 和 \,

示例数据:

姓名,姓氏

nico\,le,opeka

当前代码:

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

我怎样才能得到 firstName = nico,le 和 lastName = opeka。FileHelpers 用逗号分割,现在它返回:

名字 -> 尼科\

姓氏 -> ,le,opeka

4

1 回答 1

7

首先,您需要使所有字段可选地被引用。

[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;
    } 
}

您可以在此处找到一些代码来帮助您开始自定义拆分功能。

于 2013-08-30T18:11:59.717 回答