在.NET中解析分隔CSV

前端之家收集整理的这篇文章主要介绍了在.NET中解析分隔CSV前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个文本文件是一个逗号分隔的格式,由“在大多数字段上分隔”。我想把它变成一个我可以枚举的东西(通用集合,例如)。我不能控制文件输出也不是它用于分隔符的字符。

在这种情况下,字段由逗号分隔,文本字段用“”号标记。我遇到的问题是某些字段在其中有引号(即“8”托盘),并且偶尔被拾取为下一个领域。在数字字段的情况下,它们在其周围没有引号,但它们以a或 – 符号开始(描述正/负号)。

我在想RegEx,但我的技能不是那么伟大,所以希望有人能想出一些想法,我可以尝试。这个文件中有大约19,000条记录,所以我尽量做到这一点。这里有几个示例数据行:

"00","000000112260   ","Pie Pumpkin                             ","RET","6.99 ","     ","ea ",+0000000006.99000
"00","000000304078   ","Pie Apple caramel                       ","9.99 ",+0000000009.99000
"00","StringValue here","8" Tray of Food                             ",-00000000005.3200

有更多的领域,但你可以得到的照片….

我使用VB.NET,我有一个通用列表设置来接受数据。我试过使用CSVReader,它似乎工作得很好,直到你打一个记录像第三个(在文本字段中的报价)。如果我能以某种方式得到它来处理额外的引号,那么CSVReader选项将会很好。

谢谢!

@H_404_13@
@H_404_13@
here
Encoding fileEncoding = GetFileEncoding(csvFile);
// get rid of all doublequotes except those used as field delimiters
string fileContents = File.ReadAllText(csvFile,fileEncoding);
string fixedContents = Regex.Replace(fileContents,@"([^\^,\r\n])""([^$,\r\n])",@"$1$2");
using (CsvReader csv =
       new CsvReader(new StringReader(fixedContents),true))
{
       // ... parse the CSV
@H_404_13@ 原文链接:https://www.f2er.com/vb/256183.html

猜你在找的VB相关文章