如何使用 FileHelpers 注释或忽略 txt 文件中的一行

How to comment or ignore a line in the txt file using FileHelpers

IgnoreFirst(int) 或 IgnoreLast(int) 仅忽略固定数量的行作为页眉或页脚。但我喜欢忽略或评论 txt/csv 文件中的特定行。例如如下(忽略txt/csv中的某些段落或特定行):

############# This is a comment ##########
/* Some comment paragraph  
some more comments
last line of comment */
1,Foo,FooItem1
2,Foo,FooItem2
3,Goo,GooItem3
#4,Doo,DooItem4 <-- ignore. 
5,Eoo,EooItem5

我读过 BeforeReadRecord 和 SkipThisRecord 可能会解决这个问题,但是文档和图片一样简单,没有解释也没有提供示例。

您必须使用类似这样的方法来注册事件处理程序:

FileHelperEngine engine = new FileHelperEngine(typeof(Orders)); 
// set the event here
engine.BeforeReadRecord += new BeforeReadRecordHandler(BeforeEvent); 

然后在处理程序中,您可以检查特定条件以跳过记录:

private void BeforeEvent(EngineBase engine, BeforeReadRecordEventArgs e)
{
    // skip any bad lines
    if (e.RecordLine.StartsWith("#") || e.RecordLine.StartsWith(" "))
        e.SkipThisRecord = true;
}

也许你可以只检查它是否以整数开头,如果不是则跳过。

编辑:您还可以像这样在记录中使用 INotifyRead 界面:

public class OrdersFixed
    :INotifyRead
{
    //...

    public void BeforeRead(BeforeReadEventArgs e)
    {
        if (e.RecordLine.StartsWith(" ") ||
           e.RecordLine.StartsWith("-"))
            e.SkipThisRecord = true;
    }

}