比如说有字符串:a*b*c
现在要将其中的*号替换1,2,3(暂且3个数)
得出所有的结果(比如a1b1c,a1b2c,a1b3c,a2b1c等等)
求高手

解决方案 »

  1.   

     static void Main(string[] args)
            {
                string str = "a*b*c";
                foreach (var t in GetList(str, new List<string>() { "1", "2", "3" }))
                    Console.WriteLine(t);
                Console.ReadLine();
            }
            static IEnumerable<string> GetList(string str, List<string> list)
            {
                if (str.Contains("*"))
                    foreach (var t in list)
                    {
                        foreach (var tt in GetList(Regex.Replace(str, @"\*(.*$)", t + "$1"), list))
                            yield return tt;
                    }
                else yield return str;
            }
      

  2.   

    char[] replaceData = new char[] { '1', '2', '3' };
    List<char[]> replaceChar = new List<char[]>();
    for (int m = 0; m < replaceData.Length; m++)
    {
        for (int n = 0; n < replaceData.Length; n++)
        {
            char[] data = new char[2];
            data[0] = replaceData[m];
            data[1] = replaceData[n];
            replaceChar.Add(data);
        }
    }string source = "a*b*c";
    string[] sourceSplit = source.Split(new char[] { '*' });
    char[] sourceChar = source.ToArray();
    List<string> result = new List<string>();
    foreach (char[] replace in replaceChar)
    {
        string data = sourceSplit[0];
        for (int c = 0; c < replace.Length; c++)
        {
            data += replace[c];
            data += sourceSplit[c + 1];
        }
        result.Add(data);
    }
      

  3.   

    只要2行。foreach (string i in "123".SelectMany(x => "123".Select(y => string.Format("a{0}b{1}c", x, y))))
        Console.WriteLine(i);a1b1c
    a1b2c
    a1b3c
    a2b1c
    a2b2c
    a2b3c
    a3b1c
    a3b2c
    a3b3c
    Press any key to continue . . .
      

  4.   

    本帖最后由 caozhy 于 2013-02-07 15:56:42 编辑
      

  5.   

    基本想通一点,当"123".SelectMany选取到值时,把值作为参数x执行函数一 第一个 =>后面。函数一:当"123".Select选取到值时,把值作为参数y,与函数出入参数x一起作为参数执行函数二
    第二个 =>后面。函数二:用x,y格式化字符串。最后SelectMany是得到一个字符串序列。foreach(string i in 字符串序列) 执行打印。