FileHelper转义分隔符

本文关键字:分隔符 转义 FileHelper | 更新日期: 2023-09-27 18:29:34

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

我们的csv格式:转义逗号(,),带'',

示例数据:

name,lastname

nico'',le,opeka

当前代码:

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

如何获取firstName=nico,le和lastName=opeka。FileHelpers以逗号分隔,现在返回:

firstName->nico''

lastName->,le,opeka

FileHelper转义分隔符

首先,您需要让所有字段都有引号。

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

你可以在这里找到一些代码来开始你的自定义分割功能。