javascript中的replaceAll

js的String有一个replace方法,只能对str进行一次替换,假如你的str里有多个相同的须要替换的oldStr,它只能替换第一个,这时候就须要一个相似JAVA中的replaceAll的方法。这里提供一个本身封装的方法,经过while循环调用replace实现,效率相对会低一点。 另外还有一种经过正则表达式实现的,但使用过程当中存在一些问题。正则表达式

String.prototype.replaceAll = function(oldStr,newStr) { 
	var s=this;
	while( s.indexOf(oldStr) != -1 ) {
		 s=s.replace(oldStr,newStr); 
	};
	return s;
}

back2Fish同窗提醒,上面循环的方法不严谨,如使用【"no".replaceAll("no","now");】的时候,会陷入死循环,看来仍是正则表达式的方案比较靠谱。this

String.prototype.replaceAll = function(oldStr, newStr) {
	return this.replace(new RegExp(oldStr,"gm"),newStr); 
};
其中,gm表示匹配全局(global)和多行(multi-line)。
相关文章
相关标签/搜索