我正在创建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文件。所以我不能改变格式
答案 0 :(得分:2)
根据@dtb ... use a 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
}
}
这会正确处理报价。