让FileHelpers 2.0处理带有多余逗号的CSV文件

我目前正在使用FileHelpers库(v2.0.0.0)来解析CSV文件。 CSV文件映射到具有少量公共属性的类,假设有N个 。 问题是,默认情况下,FileHelpers似乎无法正确处理用户指定具有多于N-1个逗号的CSV文件的情况。 其余的逗号只会附加到最后一个属性值。

我认为这必须可以通过FileHelpers的属性进行配置,但我没有看到任何会忽略记录中没有匹配属性的字段。

我查看了RecordCondition ,但使用像ExcludeIfEnds(“,”)这样的东西看起来会完全跳过这行,如果它以逗号结尾,但我只是希望它们被剥离。

有可能我唯一的办法是预处理文件并删除任何尾随的逗号, 这完全没问题 ,但我想知道FileHelpers是否也可以这样做,也许我只是在文档中没有看到它。

只是一个黑客/解决方法的想法:您可以创建一个名为“ExtraCommas”的属性并将其添加到您的类中,以便在那里序列化额外的逗号而不是对象的真实属性…

如果逗号的数量不同,我认为你运气不好,必须进行后期处理。 但是,如果有固定金额,您可以在class级中设置空白字段。

 [FieldOrder(5)] public string Blank1; [FieldOrder(6)] public string Blank2; 

这并不是真的咬我,因为我不使用FileHelpers类作为业务类,我将它用作构建业务类的对象。 我存储它用于审计。 我想有一次我一直在为Blanks的场地制作私人,不知道结果如何。

这是您可以使用的自定义方法,它可能不是最佳解决方案,但它将解决最后一个逗号问题。 代码可以更加优化,这只是为了让您了解如何解决这类问题。

  int main(){ StreamReader sr = new StreamReader(@"C:\Users\musab.shaheed\Desktop\csv.csv"); var lineCount=File.ReadLines(@"C:\Users\musab.shaheed\Desktop\csv.csv").Count(); for (int i = 0; i < lineCount;i++ ) { String fileText = sr.ReadLine(); fileText=fileText.Substring(0, fileText.Length - 1); //store your data in here Console.WriteLine(fileText); }; sr.Close(); }