获取一个字符串为
var strArr="col1,1,col2,2,"有没有办法用正则表达式将其中的偶数位拼接成
str1=col1,col2而奇数个位拼接成
str2='1','2'

解决方案 »

  1.   

    不用正则,用linq也可以
    var strArr = "col1,1,col2,2";            var str1 = strArr.Split(',').Where((x, i) => i % 2 == 0).Aggregate((x, y) => y = x + "," + y);
                var str2 = strArr.Split(',').Where((x, i) => i % 2 == 1).Aggregate((x, y) => y = x + "," + y);
      

  2.   

    这个用不着正则吧
    var strArr = "col1,1,col2,2,".Split(new string[] { ",", "," }, StringSplitOptions.RemoveEmptyEntries).Select((t, index) => new { value = t, index = index });
                string str1 = string.Join(",", strArr.Where(t => t.index % 2 == 0).Select(t => t.value).ToList());
                string str2 = string.Join(",", strArr.Where(t => t.index % 2 == 1).Select(t => t.value).ToList());
      

  3.   

    奇数位各个元素还需要加单引号是吗?
    那改一下
     var str2 = strArr.Split(',').Where((x, i) => i % 2 == 1).Aggregate((x, y) => y = "'" + x + "','" + y + "'");
      

  4.   

                var strArr = "col1,1,col2,2,";
                string[] Arr = strArr.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                string s_Res1 = String.Join(",", Arr.Where((s, i) => i % 2 == 0).Select(s => s).ToArray());
                string s_Res2 = String.Join(",", Arr.Where((s, i) => i % 2 == 1).Select(s => s).ToArray());
      

  5.   

    来个正则的            var strArr = "col1,1,col2,2,";
                string str1 = string.Join("", Regex.Matches(strArr, @"(?<=^(([^,,]+[,,]){2})*)[^,,]+[,,]").OfType<Match>().Select(t => t.Value).ToList()).TrimEnd(',', ',');
                string str2 = string.Join("", Regex.Matches(strArr, @"(?<=^[^,,]+[,,](([^,,]+[,,]){2})*)[^,,]+[,,]").OfType<Match>().Select(t => "'" + t.Value + "'").ToList()).TrimEnd(',', ',');
             
      

  6.   

    好吧,刚测试了,要是只有一组数据的时候
     var strArr = "col1,1,";
    var str2 = strArr.Split(',').Where((x, i) => i % 2 == 1).Aggregate((x, y) => y = "'" + x + "','" + y + "'");
    获取的数据没有单引号