js中的replaceAll的实现
在java中,字符串可以使⽤replaceAll进⾏全局替换,类似于正则表达式中使⽤了/g的全部控制变量。但是js字符串(String)本⾝是不⽀持replaceAll⽅法的,只能使⽤简单的replace⽅法,如下所⽰:
1var a = "xxxxx";js 正则替换
2 place("x","a"));  //返回 axxxx
很显然,⽤简单的replace只能替换第⼀个匹配项,这可能对某些需求不太⽅便。当然,也可以通过如下的⽅式,实现全局的替换:
1var a = "xxxxx";
2 place(/x/g,"a"));  //返回 aaaaa
但是优秀的程序员⼈都是“懒惰”的,我们不想每次全局替换的时候都⽤正则的⽅式来实现,有没有⼀种⼀劳永逸的⽅法呢?答案是肯定的,只需要在代码中加⼊如下代码(摘⾃⽹络):
1 placeAll = function(reallyDo, replaceWith, ignoreCase) {
2if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
place(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);
4    } else {
place(reallyDo, replaceWith);
6    }
7 }
这⾥为String添加了⼀个函数(相当与添加了native Code)replaceAll。
(String | RegExp)reallyDo代表被替换的字符串,(String)replaceWidth代表替换的字符串,(Boolean)ignoreCase为是否忽略⼤⼩写。
在之后的js代码中就可以直接使⽤replaceAll⽅法了。
1var a = "xxxxx";
2 placeAll("x","a"));  //返回 aaaaa