FileHelper escape delimiter

前端 未结 1 1695
时光说笑
时光说笑 2020-12-19 10:22

I am using FileHelper 2.0 for parsing my csv data. Is there any option that filehelper can properly handle escaped delimiter? That it can identify field as data and not as d

相关标签:
1条回答
  • 2020-12-19 11:09

    First, you need to make all of your fields optionally quoted.

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

    Then you need to quote all the fields which contain an escaped character. You can use a BeforeReadRecord event for this.

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

    You can find some code to get you started on your customized split function here.

    0 讨论(0)
提交回复
热议问题