模拟表单提交数据如 :,a,b,,,1,2,c,3,,1aa2,e,f,,整个字符串可能出现多个“,”               
整个字符串中可能出现“数字+任意字符组合”
整个字符串中可能出现重复的数字。需求“,a,b,,1,1,2,c,3,,1aa2,e,f,,” 变为 “1,2,3”求指点。仅求 使用 Regex.Replace 处理的方式。

解决方案 »

  1.   

    不用正则。
    你逗号Split一下,Select出为数字的,再Distinct一下,最后用逗号Join一下
      

  2.   

      string Ori=",a,b,,1,1,2,c,3,,1aa2,e,f,," ;
                int tmp;
                  Console.WriteLine(string.Join(",", Ori.Split(',').Where(c => int.TryParse(c, out tmp)).Distinct()));
                Console.ReadKey();
      

  3.   


    选择是否为数字的那一步可以用正则,如下: string Ori=",a,b,,1,1,2,c,3,,1aa2,e,f,," ;
              
                  Console.WriteLine(string.Join(",", Ori.Split(',').Where(c => new Regex(@"^\d+$").IsMatch(c)).Distinct()));
                Console.ReadKey();
      

  4.   


    你说的这些我都知道。我就想知道 这个需求 用一条正则处理的话应该怎么做。以学习正则为主要目的的。我现在方法类库理由这些。FormInt
    FomrIntArray
    ClearEmptyValue
    这些我都有。。
      

  5.   

    必须用Replace方法一条语句太难了,而且楼主只给20分,估计没几个正则高手会动脑筋去写吧。
      

  6.   


    我写出来一部分,但是还是缺点。,+(\d+([^\d+,]),+|[^\d+,]([^,]+)?,+)+
      

  7.   

    ^,+?|,{1,}|,+\d+([^\d+,])|[^\d+,]([^,]+)?,+|,$又近了一步