我的代码中要用到csv格式文件,这个文件实质上是将数据使用","分隔,形如:   张三,21,学生,团员,,无
   李四,45,教师,党员,2000,无   其中存在一些空白信息,而且要保留这些空白信息
我的代码:
String pattern = "[^,]*";
String text = "wfwfdw,gqdqd,3regreg,3e2t52,,4y5jh,iu5uy4t3t,t3r3r,r3,r2";
String[] result = new string[20];
int index = 0;
foreach (Match m in Regex.Matches(text, pattern))
{
   if (m.ToString().Equals("") != true)
   {
      result[index++] = m.ToString();
   }
}由于不符合表达式的情况下,m返回"",所以",,"中的空白信息会丢失.
我自己的想法是用" text=text.Replace(",,",", ,");"将空白信息替换成空格,这样问题就解决了,请问有没有更好的表达式可以解决

解决方案 »

  1.   

    直接split不行吗?给个用正则的理由先String text = "wfwfdw,gqdqd,3regreg,3e2t52,,4y5jh,iu5uy4t3t,t3r3r,r3,r2";
    string[] result = text.Split(',');
      

  2.   

    去看看这个网站可以实现你的要求吗:http://sharptoolbox.com/categories/regular-expressions
      

  3.   

    string pattern = ",(?!,)"; 
    string text = "wfwfdw,gqdqd,3regreg,3e2t52,,,4y5jh,,iu5uy4t3t,t3r3r,,,,r3,r2";
    string[] a = Regex.Split(text, pattern);
    foreach (string s in a)
    {
        Console.WriteLine(s);
    }输出:
    wfwfdw
    gqdqd
    3regreg
    3e2t52,,
    4y5jh,
    iu5uy4t3t
    t3r3r,,,
    r3
    r2
    请按任意键继续. . .
      

  4.   

      string pattern = ",+"; 
                string text = "wfwfdw,gqdqd,3regreg,3e2t52,,,4y5jh,,iu5uy4t3t,t3r3r,,,,r3,r2";
                string[] a = Regex.Split(text, pattern);
                foreach (string s in a)
                {
                    Console.WriteLine(s);
                }
    输出OK
    wfwfdw
    gqdqd
    3regreg
    3e2t52
    4y5jh
    iu5uy4t3t
    t3r3r
    r3
    r2
    请按任意键继续. . .
      

  5.   


    我自己的想法是用" text=text.Replace(",,",", ,");"将空白信息替换成空格,这样问题就解决了,请问有没有更好的表达式可以解决?
    ---------------------------------
    sorry,前面没看清,text=text.Replace(",,",", ,")这个不是一个很简单的方法吗?
    如果用正则string text = "wfwfdw,gqdqd,3regreg,3e2t52,,,4y5jh,,iu5uy4t3t,t3r3r,,,,r3,r2";
                text = Regex.Replace(text, "(,)(?=,)", "${1} ");
                Console.WriteLine("new text:{0}",text);            string[] a = text.Split(',');
                foreach (string s in a)
                {
                    Console.WriteLine(s);
                }
    输出
    new text:wfwfdw,gqdqd,3regreg,3e2t52, , ,4y5jh, ,iu5uy4t3t,t3r3r, , , ,r3,r2
    wfwfdw
    gqdqd
    3regreg
    3e2t52
    4y5jhiu5uy4t3t
    t3r3rr3
    r2
    请按任意键继续. . .