假设一个字符串为  'a,b|b,c|a,c'  需要按以下规则将其分割为一个list
|分割的是字符串的每一位  ‘,’为每一位的几种情况比如以上字符串输出的结果应该为 
aba acc aca bba bbc bca bcc 求各位高手给个办法...还有这个LINQ法  
   var resultList = (from unit in r_string.Split(new char[] { '|' }) select unit.Split(new char[] { ',' })).Aggregate(Enumerable.Repeat("", 1), (result, current) => (from o in result from t in current select o + t)).ToList();我在vs2008下编译通过了,但运行起来就报错  vs2010下就没问题..能告诉我这个是为什么也行。。

解决方案 »

  1.   


    比如 a,b|b,c|a,c 能分成6个字符串 第一位有 a和b两种情况
    第二位有 b和c两种情况
    第三位有 a和c两种情况
      

  2.   


    比如 a,b|b,c|a,c 能分成6个字符串 第一位有 a和b两种情况
    第二位有 b和c两种情况
    第三位有 a和c两种情况
    套个3层循环不可以吗
      

  3.   


    比如 a,b|b,c|a,c 能分成6个字符串 第一位有 a和b两种情况
    第二位有 b和c两种情况
    第三位有 a和c两种情况
    套个3层循环不可以吗
    字符串不是一定是这样的,每一位的长度是不定的
      

  4.   

            protected void Button3_Click(object sender, EventArgs e)
            {
                string aa = "'a,b|b,c|a,c'";
                totalstring="";
                TextBox2.Text = aa;            aa=aa.Replace ("'","");
                string[] strtemp=aa.Split ('|');            int l = strtemp.Length;            returnstr(strtemp, 0, l);
                TextBox1.Text = totalstring;
            }        public void returnstr(string[] stringtemp,int step,int strlen)
            {
                if (step + 1 > strlen)
                {
                    return;
                }
                else
                {
                    string[] stemp = stringtemp[step].Split(',');
                    for (int i = 0; i < stemp.Length; i++)
                    {
                        totalstring += stemp[i].ToString();
                        if (step + 1 == strlen)
                            totalstring += " ";
                        returnstr(stringtemp, step + 1, strlen);
                    }
                }
            }我做的一个简单递归,这个递归还有点小问题
    按照楼主给的字符串得出结果aba c ca c bba c ca c 就是会把前一个的重复部分忽略的,楼主可以参考着补全下