0

我正在创建一个 CSV 导入工具(逗号分隔)。我试图使这个导入工具尽可能通用,以便它可以处理任何 CSV 文件。

我几乎完成了该工具,但遇到了一个我发现难以处理的文件。

如何处理具有以下格式数据的文件?

column1,column2,column3,column4,column5
----------
alex,p,22323,23232,hello
mike,t,"121212,232323,4343434",33432,hi
guna,s,"2423,2332",whats
cena,a,34443,33432,up

由于文件是逗号分隔的,并且它的一个值在标识符之间也是逗号分隔的,"value,value,value" 我发现它很难处理。

我该如何解决这个问题?

我无法控制 CSV 文件。所以我不能改变格式

4

1 回答 1

2

根据@dtb...使用 CSV parser。如果您参考Microsoft.VisualBasic,那么您可以:

var data=@"column1,column2,column3,column4,column5
----------
alex,p,22323,23232,hello
mike,t,""121212,232323,4343434"",33432,hi
guna,s,""2423,2332"",whats
cena,a,34443,33432,up";

using (var sr = new StringReader(data))
using (var parser =
    new TextFieldParser(sr)
        {
            TextFieldType = FieldType.Delimited,
            Delimiters = new[] { "," },
            CommentTokens = new[] { "--" }
        })
{
    while (!parser.EndOfData)
    {
        string[] fields;
        fields = parser.ReadFields();
        //yummy
    }
}

这可以正确处理引号。

于 2013-07-02T23:27:04.773 回答