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)。
相關文章
相關標籤/搜索