能够解析类似下面的文本a,b,"a,2","123""456",,"AAA
BBB",1000
100,200,"3,000",400,500,600结果为
[1,1] = a
[1,2] = b
[1,3] = a,2
[1,4] = 123"456
[1,5] = AAA
BBB
[1,6] = 1000
[2,1] = 100
[2,2] = 200
[2,3] = 3,000
[2,4] = 400
[2,5] = 500
[2,6] = 600

解决方案 »

  1.   

    分行就是
    string[] split = {Enviroment.NewLine}; 
    然后xxx.Split(split, 这个枚举忘了有只能提示 可以不空的数组移除)
      

  2.   


    (?:\"(?>[^\"]*(?:\"{2})?|\"(?<D>)|\"(?<-D>))*(?(D)(?!))\")|[^,\\n]*
    随便写了一个 自己试了下没问题。 好久没来CSDN了
      

  3.   

    正则不会,只能一个一个逗号分。下面是csv文件分析的程序。CSV 文件分析与导入数据库
    http://blog.csdn.net/greenery/archive/2008/08/28/2843773.aspx
      

  4.   

    符合当前例子,没做其它测试,如果有不符合的,给出实例
    string[] lines = Regex.Split(yourStr, @"(?<=,[^,""]*\r?)\n(?!$)");
    for (int i = 1; i <= lines.Length; i++)
    {
        MatchCollection mc = Regex.Matches(lines[i - 1], @"""(?<o>[^,]*?)""(?=,|$)|""(?<o>[^""]*)""|(?<o>[^,""]+)");
        for (int j = 1; j <= mc.Count; j++)
        {
            richTextBox2.Text += "[" + i + "," + j + "] = " + mc[j - 1].Groups["o"].Value + "\n";
        }
    }
    输出
    [1,1] = a
    [1,2] = b
    [1,3] = a,2
    [1,4] = 123""456
    [1,5] = AAA 
    BBB
    [1,6] = 1000 
    [2,1] = 100
    [2,2] = 200
    [2,3] = 3,000
    [2,4] = 400
    [2,5] = 500
    [2,6] = 600