CSV文件是用逗号作为分隔符的,所以如果是简单的CSV文件,用split(',')就可以了。
但是Excel 编辑CSV文件,且内容中有逗号,得到的csv文件如下:
"aaa,aaa",bbb,ccc
这时候split(',')就行不通了。
为了对应这种情况,写了一段简单的代码处理一下。
var result = new List<string>();
var filter = @"([^\""\,]*[^\""\,])|[\""]([^\""]*)[\""]";
Match match = Regex.Match(line, filter, RegexOptions.IgnoreCase); while (match.Success)
{
if (!string.IsNullOrEmpty(match.Groups[2].Value))
{
result.Add(match.Groups[2].Value);
}
else
{
result.Add(match.Value);
}
match = match.NextMatch();
}
核心代码就是上面的正则表达式,它可以区分有双引号的部分和非双引号分割的部分。
([^\""\,]*[^\""\,]) 不以双引号及逗号做开头和结果的字符串
[\""]([^\""]*)[\""] 以双引号及逗号做开头和结果的字符串