用javascript实现php中的str_replace

先前要写一段js脚本,将html中的指定字符替换成其它字符,如果直接用js的str.replace(),只会替换第一个出现的字符,于是写了比较粗糙能替换全部指定字符的版本:

function strReplace(search, replace, str) {
 var tmp = str;
 do {
  str = tmp;
  tmp = str.replace(search, replace);
 }while (str != tmp);
 return str;
}

这个脚本看上去不是太爽,效率估计很勉强,于是google了一下,原来有更好的版本:

//俺主要是为了适应php的str_replace()啊
function strReplace(search, replace, str) {
 var regex = new RegExp(search, "g");
 return str.replace(regex, replace);
}

或者oo一点的写法

String.prototype.replaceAll = function(search, replace){
 var regex = new RegExp(search, "g");
 return this.replace(regex, replace);
}

测试一下:

var str = 'cccaaacccaaacccaaacccaaacccaaa';
alert(str.replaceAll('aaa', 'testIt'));

呵呵,一切ok

作者: 发表于March 10, 2006 at 10:07 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags:

2 条评论 »

  1. 宇义 于 2006-03-10 @ 12:26:03 留言

    js 的 str.replace() 的第一个参数要写成正则,就是替换所有的了。比如

    "aabbccaa".replace(/aa/ig, "AA");
  2. volcano 于 2006-03-10 @ 12:47:07 留言

    我也是到后来才弄清这个,只是写成这样更符合以前在php中的使用习惯:)

RSS 为此帖反馈评论 · 反向跟踪 网站

留条评论