本帖最后由 zhuzhaodan 于 2012-11-27 20:04:53 编辑

解决方案 »

  1.   

    原字符串: str="22222222a11111111a222222a";
    表达式:regex expression=new regex(@"a");
    想要的结果:arraylist arr
    arr[0]   字符串  "22222222"
    arr[1]   字符串 "匹配到了a"
    arr[2]   字符串  "11111111"
    arr[3]   字符串 "匹配到了a"
    arr[4]   字符串  "222222"
    arr[5]   字符串 "匹配到了a"
      

  2.   

    是啊,正则的Split方法直接可以取到匹配和未匹配的部分,特殊的处理一下就行了。你需要给出个示例。
      

  3.   

    string s = "22222222a11111111a222222a";
    string[] results = Regex.Split(s, @"(a)").Select((x, y) => y % 2 == 1 ? "匹配到了" + x : x).ToArray();
    foreach (string result in results)
    Console.WriteLine(result);
      

  4.   

    select 这是谁的方法,string[] 每查到这个方法阿?
      

  5.   

    linq的扩展方法:这个.net 3.5可以用,如果是.net2.0就不能用。 string s = "22222222a11111111a222222a";
    string[] results = Regex.Split(s, @"(a)").Where(x => x.Length > 0).Select((x, y) => y % 2 == 1 ? "匹配到了" + x : x).ToArray();
    再增加个where,把生成的最后一个空白字符串筛掉。
      

  6.   

    基本思路是这样的:
    用正则表达式(a)对源字符串拆分后,得到如下字符串数组:
    22222222
    a
    11111111
    a
    222222
    a
    (最后还有一个拆分出来的空串)即肯定是:
    拆分项
    正则匹配项
    拆分项
    正则匹配项
    拆分项
    ……
    正则匹配项
    拆分项根据元素在数组中的下标,匹配项一定是奇数下标,所以重新遍历一下将奇数下标的元素处理一下,就得到最后的结果了。
      

  7.   

    string s = "22222222a11111111a222222a";
    string[] results = Regex.Split(s, @"(a)").Select((x, y) => y % 2 == 1 ? "匹配到了" + x : x).Where(x => x.Length > 0).ToArray();
    这样写就行了。
      

  8.   

    linq to Array 那个还没看过,我去看看先,不太了解那个写法,然后我试试你的方法,regexExpression就没有别的方法能在存入数组之前对匹配项做修改的办法了吗
      

  9.   

    那个select后面的x,y那一部分是C#的哪块知识阿朋友,我去查查
      

  10.   

    Select((x, y) =>它对应一个匿名方法,有2个参数:x表示集合中的当前元素,y表示当前元素在集合中的位置(即下标)
    =>右边的是这个方法的具体代码,即返回一个处理的结果。Select是投影操作,对源泛型可枚举对象里的元素进行某种处理,将得到新元素组成一个新的泛型可枚举对象。
      

  11.   

    我试试了一下,发现结尾没有空字符串阿 
    string[] arr=expression.Split(text);
                arr=arr.Select((x,y)=>y%2==1?"OK":x).ToArray();
      

  12.   

    按照我这个规则应该没有吧,什么情况会出现空?另外,对于select我看MSDN里面写的是一个泛型集合,可是实际上并没有把类型制定为参数呀
    public static TSource[] ToArray<TSource>(
    this IEnumerable<TSource> source
    )
      

  13.   

     string s = "22222222a11111111a222222a";
                var ary = Regex.Matches(s, @"a|[^a]+").Cast<Match>().Select(t => t.Value).ToArray();