Filehelpers:每行有多个分隔符?

Filehelpers: Multiple delimiters in each row?

当一个文件的每行有多个分隔符时,FileHelpers可以解析成一个对象吗?下面是我需要使用 FileHelpers 从第三方数据提供程序解析的示例行,如果可能的话:

ItemID=1000|VerificationResult=ERROR|VerificationResultCode=-101|VerificationResultDetail=Duplicate ItemID|ProfileID=|ACHRouting=|ACHAccount=|LastFourCC=4444|InvoiceNo=731-021-36-572|DateTime=1/20/2016 1:04:30 PM|CustomField1=|CustomField2=

如果数据提供者只使用竖线分隔符,那么使用 FileHelpers 就很简单了,但是正如您所见,每个 key/value 对之间都有一个“=”,然后每对之间有竖线分隔符...感叹

属性允许您为给定字段指定不同的分隔符。

另一种方法是为键值对编写您自己的转换器。

public class KeyValuePairConverter : ConverterBase
{
    private String _KeyName;

    public KeyValuePairConverter(String keyName)
    {
        // needs a parameter to get the export correct
        _KeyName = keyName;
    }

    public override object StringToField(string from)
    {
        // return everything after the last equals
        // (you could choose to validate the first part of the string against the _KeyName)
        return from.Substring(from.LastIndexOf('=') + 1);;
    }

    public override string FieldToString(object fieldValue)
    {
        return String.Format("{0}={1}", _KeyName, fieldValue);
    }
}

然后您的字段定义将如下所示

    [FieldConverter(typeof(KeyValuePairConverter), "ItemID")]
    public String ItemID;