一个字符串分几段由逗号(“,”)隔开,其中某些段有双引号(“"”),有双引号的文本段中可能含有逗号并且没有双引号的文本断中一定不会有逗号例如下面的两格字符串:
0,12345,"abc,de",34567,"23456789",2,0
1,23456,"zxcvbnsdf",76543,"ert,rtyer",6,0我想用split从逗号处分割字符串,但是不能把含双引号的字符段分割能不能用正则表达式替换掉双引号中的逗号,以免影响分割结果不知道我的表述是否清楚,请高手指教,谢谢!

解决方案 »

  1.   

    private void button1_Click(object sender, System.EventArgs e)
    {
    string reg=@"""\w+,{1}\w+""";
    this.textBox2.Text=Regex.Replace(this.textBox1.Text.Trim(),reg,new MatchEvaluator(this.do1));
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.textBox1.Text="0,12345,\"abc,de\",34567,\"23456789\",2,01,23456,\"zxcvbnsdf\",76543,\"ert,rtyer\",6,0";
    this.textBox2.Text=""; }
    private string do1(Match m)
        {
              string s=m.Value;
    return s.Replace(",","");       }
      

  2.   

    string[] slist = {@"0,12345,""abc,de"",34567,""23456789"",2,0",
    @"1,23456,""zxcvbnsdf"",76543,""ert,rtyer"",6,0"};
    foreach (string s in slist)
    {
    Regex re = new Regex(@"""[^""]+""|[^,]+");
    foreach (Match m in re.Matches(s))
    Console.WriteLine("{0}",m.Value);
    }