所以我有这个 CSV 文件,其中的内容就是这样......
"Name","Age","Gender","City, State"
到目前为止,我已经成功地删除了双引号 - 除了包含以下代码的第一个和最后一个条目。
using (StreamReader reader = new StreamReader(outputReport))
{
headers = reader.ReadLine().Split(new string[] { "\",\"" },
StringSplitOptions.RemoveEmptyEntries);
}
这会产生一个字符串数组,其内容为:
\"Name
Age
Gender
City, State\"
我已多次尝试删除\"
包括将此添加到我的拆分条件中:
String.Concat('\\','\"')
而且:
"\\\""
但似乎没有任何工作,我觉得我应该能够在Split方法中删除它们。这是一个棘手的字符串匹配。有任何想法吗?谢谢你的帮助!
答案 0 :(得分:8)
请勿使用String.Split()
读取CSV数据!
边缘情况太多了。你刚刚来到冰山一角。而且,它比它需要的慢得多。您需要专用的CSV解析器。框架中内置了一个(Microsoft.VisualBasic.FileIO.TextFieldParser
),您可以下载和使用其中一些,包括FastCSV
和我自己的EasyCSV
。
答案 1 :(得分:1)
试试这个:s.Replace(@""",","~").Replace(@"""","~").Split('~');
其中s是csv行读取的字符串值。
答案 2 :(得分:1)
您可以按字符“(双引号),”(逗号)和/(斜杠)分割。试试这个:
using (StreamReader reader = new StreamReader(outputReport))
{
char [] splitByCharSet = new char[3]{'\"', '\\', ','};
headers = reader.ReadLine().Split(splitByCharSet, StringSplitOptions.RemoveEmptyEntries);
}