2016-01-20 46 views
0

当文件的每一行有多个分隔符时,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

[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; 
+0

感谢shamp00!我不使用filehelpers足以知道我可以覆盖并创建我自己的转换器。这很完美,谢谢。 – Jeff