我有一个文本文件是一个逗号分隔的格式,由“在大多数字段上分隔”。我想把它变成一个我可以枚举的东西(通用集合,例如)。我不能控制文件是输出也不是它用于分隔符的字符。
在这种情况下,字段由逗号分隔,文本字段用“”号标记。我遇到的问题是某些字段在其中有引号(即“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