在字符串中拆分\“

时间:2013-09-20 13:10:39

标签: c# csv split

所以我有这个 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方法中删除它们。这是一个棘手的字符串匹配。有任何想法吗?谢谢你的帮助!

3 个答案:

答案 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);
        }