非要在一个里完成吗。
用字符替换就行了
str.replace("%","~").replace("*","#").replace("$","+");

解决方案 »

  1.   

    var mm = 
    {
      "%" : "~",
      "*" : "#",
      "$" : "+"
    }
    var str = "dasdhasdgwhedfgh%sdhfjkdfhjk*dshfjkds$";
    str = str.replace(/(%|\*|\$)/g, function(a){return mm[a]});
    alert(str);
      

  2.   

    归归, meizz(梅花雪)简直是天才啊,谢谢了
      

  3.   

    能讲一下function(a){return mm[a]});是什么意思吗?特别是a是什么意思,分马上给!
      

  4.   

    也可以把函数写到外面去:
    function mm(str)
    {
      var mz = {"%" : "~", "*" : "#", "$" : "+"}
      return mz[str];
    }
    var str = "dasdhasdgwhedfgh%sdhfjkdfhjk*dshfjkds$";
    str = str.replace(/(%|\*|\$)/g, mm);
    alert(str);
      

  5.   

    我知道了,replace函数每找到一匹配的字符一次,就调用函数mm一次,并将找到的字符做为参数,然后将函数的返回值做为要替换的值.对吗?