Filehelpers:每行有多个分隔符?

时间:2016-01-20 21:17:13

标签: c# filehelpers

当文件的每一行中有多个分隔符时,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来说这将是微不足道的,但是当你看到每个键/值对都有一个" ="然后在它们之间然后是每对之间的管道分隔符......叹息。

1 个答案:

答案 0 :(得分:1)

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

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

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;