- js中字符串的替換
var str = "男的女的老的少的"; alert(str.replace('的',''));
可以看到替換后的str的值為"男女的老的少的",replace(str1,str2)方法替換的只是第一個匹配的字符串,那么如何實現替換全部匹配的字符串呢?
在java語言中有給出的replaceAll方法能夠實現這樣的功能,但很遺憾javascript沒有提供這樣的方法,但replace方法要比我們想象的強大,實際上通過它我們可以實現我們的需求的。
給出replace的語法定義
stringObj.replace(rgExp, replaceText)
其中stringObj是字符串(string),reExp可以是正則表達式對象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。
第一個例子是參數rgExp 為字符串的情況,下面我們用正則表達式實現全部替換的功能
var str = "男的女的老的少的"; alert(str.replace(new RegExp(/(的)/g),''));
以上實現了字符串的全部替換,但這種正則表達式是有局限的,匹配的是一些特定的字符串,如何匹配動態的字符串呢?
var replaceStr = "的"; alert(str.replace(new RegExp(replaceStr,'gm'),''));
這樣我們就完成了匹配字符串的動態賦值。
另外還有其他的方法實現全部替換
alert(str.split(replaceStr).join(''));
網上查到一種方法,感覺不可取
function ReplaceAll(str, sptr, sptr1){ while (str.indexOf(sptr) >= 0){ str = str.replace(sptr, sptr1); } return str; }
調用這個方法執行以下代碼的話,會陷入死循環的
var ss = 'abc'; alert(ReplaceAll(ss,'b','bc'));