C# 正则表达式里面,怎样能够实现一次性替换所有的字符串啊。比如 String content = "a1 b2 c3 d4 f5";
现在我要把 "a1" 和 "b2" 和 "c3" ,分别替换为 "A1" ,"B2" ,"C3"
怎样能让这三个替换同时进行。 而不是先替换a1,再替换b2,最后再c3。希望能贴个例子出来。谢谢!

解决方案 »

  1.   

    string var = "a1 b2 c3 d4 f5";

    string[] newvar = {"A","B","C"};
    string[] oldvar = {"a","b","c"};
    for(int i=0;i<newvar.Length;i++){
    var = var.Replace(oldvar[i],newvar[i]);
    }
    Response.Write(var);
      

  2.   

    string var = "a1 b2 c3 d4 f5";

    string[] newvar = {"A","B","C"};
    string[] oldvar = {"a","b","c"};
    for(int i=0;i<newvar.Length;i++){
    var = var.Replace(oldvar[i],newvar[i]);
    }
    Response.Write(var);这样做也是对var进行了三次搜索才成功的.
    请问有没有什么办法能够提高替换的效率?
    就是var这个变量,一次的搜索后,就能替换全部的变量.
      

  3.   

    d4 和 f5 不用换吗?content = content.ToUpper();5个一起换..
      

  4.   

    var = var.Replace(a;A);
    var = var.Replace(b;B);
    var = var.Replace(c;C);这个怎样。。不需要for来循环了~~
      

  5.   

    就是这个字符串么还是别的,普通的方法是这么做static string MatchEval(Match m)
    {
      return m.Value.ToUpper();}
    static void Test42()
    { String content = "a1 b2 c3 d4 f5"; content = Regex.Replace(content, "[abc]", new MatchEvaluator(MatchEval));

    Console.WriteLine(content);}but the performance is probably worse than looping
      

  6.   

    具体应用是这个样的:有于一个静态的 html字段,html = "
           <table >
              <tr> <td> @Title1 </td><td>@CreateDate</td> </tr>
              <tr> <td colspan=2> @Content1 </td> </tr>
            </table>
     " .
    如果这个html里面有些特定的标记,现在要把这些标记替换出来。这些标记可能有好几个,大家说怎么能够执行得最快。
      

  7.   

    大家觉得, 微软的asp.net里面对于 .aspx文件的<%# Name %> 这些标记的替换是怎么做的。
      

  8.   

    每种特殊标记,用一个replace语句与用一个replace语句替换所有的,效率没什么差别的吧
      

  9.   

    use the similar method I provided above
    static Hashtable ht = new Hashtable();static string MatchEval(Match m)
    {
      return ht[m.Value];}
    static void Test42()
    {         ht["@Title1"] = "abc";
             ht["@CreateDate"] = "def";
             ...; String content = "....."; content = Regex.Replace(content, @"\@[^<>]+", new MatchEvaluator(MatchEval));

    Console.WriteLine(content);}
      

  10.   

    TO : saucer(思归) 请问一下, 如果我用"> @"作为开始边界 ," <"作为结束边界,提出中间的CreateDate,和Title1 。那个正则表达示该怎么写啊。
      

  11.   

    trycontent = Regex.Replace(content, @"> @([\s\S]*?) <", new MatchEvaluator(MatchEval));...static string MatchEval(Match m)
    {
      return "> " + ht[m.Groups["1"].Value] + " <";}