zerahuang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在java中,字符串可以使用replaceAll进行全局替换,类似于正则表达式中使用了/g的全部控制变量。但是js字符串(String)本身是不支持replaceAll方法的,只能使用简单的replace方法,如下所示:

1 var a = "xxxxx";
2 alert(a.replace("x","a"));  //返回 axxxx

很显然,用简单的replace只能替换第一个匹配项,这可能对某些需求不太方便。当然,也可以通过如下的方式,实现全局的替换:

1 var a = "xxxxx";
2 alert(a.replace(/x/g,"a"));  //返回 aaaaa

但是优秀的程序员人都是“懒惰”的,我们不想每次全局替换的时候都用正则的方式来实现,有没有一种一劳永逸的方法呢?答案是肯定的,只需要在代码中加入如下代码(摘自网络):

1 String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {  
2     if (!RegExp.prototype.isPrototypeOf(reallyDo)) {  
3         return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);  
4     } else {  
5         return this.replace(reallyDo, replaceWith);  
6     }  
7 }  

这里为String添加了一个函数(相当与添加了native Code)replaceAll。

(String | RegExp)reallyDo代表被替换的字符串,(String)replaceWidth代表替换的字符串,(Boolean)ignoreCase为是否忽略大小写。

在之后的js代码中就可以直接使用replaceAll方法了。

1 var a = "xxxxx";
2 alert(a.replaceAll("x","a"));  //返回 aaaaa

 

posted on 2013-03-25 17:17  zerahuang  阅读(6659)  评论(0编辑  收藏  举报