我有一个string aa=@"2341kj%%1%%h542gf52498t7ertgs%%2%%0e76rts87df6g9dfs956s
sdfsdf%%3%%dgthdfhufdtrfydrtydr%%4%%tydrtydghjgfhjj
dertydertdydrt%%5%%ydert6yudrtyudrtyudyud7f6g"
然后有个
            List<string[]> sList = new List<string[]>();
            string[] str1 = new string[] {"1","aaaaeraa"};
            sList.Add(str1);
            string[] str2 = new string[] { "2", "berb" };
            sList.Add(str2);
            string[] str3 = new string[] { "3", "cccccqwcccc" };
            sList.Add(str3);
            string[] str4 = new string[] { "4", "awer1" };
            sList.Add(str4);
            string[] str5 = new string[] { "5", "1a23aw55weer1" };
            sList.Add(str5);
            .......................
            ................我想把红色部分
%%1%% 替换成string[] {"1","aaaaeraa"}里面的"aaaaeraa"
%%2%% 替换成string[] {"2","berb"}里面的"berb"
...............
........
同理全部替换掉注:红色的的个数和List的个数是相同的

解决方案 »

  1.   

    List 不合适 ,这个时候要用 Dictionary
      

  2.   

    用正则表达式 
     "%%(\d)%%"
    取得里面的数字,就是key了,用key 查出 Dictionary的value
      

  3.   

                string aa = @"2341kj%%1%%h542gf52498t7ertgs%%2%%0e76rts87df6g9dfs956s
    sdfsdf%%3%%dgthdfhufdtrfydrtydr%%4%%tydrtydghjgfhjj
    dertydertdydrt%%5%%ydert6yudrtyudrtyudyud7f6g";
                List<string[]> sList = new List<string[]>();
                string[] str1 = new string[] { "1", "aaaaeraa" };
                sList.Add(str1);
                string[] str2 = new string[] { "2", "berb" };
                sList.Add(str2);
                string[] str3 = new string[] { "3", "cccccqwcccc" };
                sList.Add(str3);
                string[] str4 = new string[] { "4", "awer1" };
                sList.Add(str4);
                string[] str5 = new string[] { "5", "1a23aw55weer1" };
                sList.Add(str5);
                aa = Regex.Replace(aa, @"%%(\d+)%%", new MatchEvaluator(delegate(Match m)
                {
                    int num = Convert.ToInt32(m.Groups[1].Value);
                    return sList[num-1][1];
                }));
                Console.WriteLine(aa);
      

  4.   

    %%1%% 为什么 一开始不直接定义成{1} 这样呢?然后直接string.format