原帖:https://www.cnblogs.com/jasonlam/p/7070604.html
1. 替換第一個(gè)字符串:
string.replace("a","b");
2. 替換所有字符串:
string.replace(new RegExp(key,'g'),"b");
內(nèi)容:
我要用 JS 替換一個(gè)多行文本的關(guān)鍵字
正常章姓,沒有變量的時(shí)候應(yīng)該是這樣:
把 a 替換成 b:
string.replace("a","b");
以上只能替換第一個(gè)匹配的段只,要全文匹配應(yīng)該用正則表達(dá)式:
string.replace(/a/g,"b");
正則加個(gè)參數(shù) g 辙谜,表示全文匹配。
但現(xiàn)在伏嗜,我要替換的不是 a 這個(gè)字符了,而是從外面?zhèn)鬟M(jìn)來的一個(gè)變量:
var key;
我可以這么寫:
string.replace(key,"b");
這只能替換第一個(gè)匹配的伐厌,要全文匹配就遇到難題了:
string.replace(/key/g,"b");
這樣寫是不行的承绸,變量 key 傳不到正則里面去。挣轨。军熏。頭疼啊
于是我在網(wǎng)上找啊找。
我先找 replace 替換變量卷扮,有說用加號(hào)拼接正則的荡澎,好像也失敗了。晤锹。摩幔。看得我暈暈乎乎的鞭铆。
我無意中發(fā)現(xiàn) java 有個(gè) replaceAll() 方法热鞍,我想如果可以這樣不就好了嗎:
string.replaceAll(key,"b");
這樣就不用正則了,變量就能進(jìn)去了衔彻。
然后發(fā)現(xiàn) JS 里沒有 replaceAll() 這個(gè)方法薇宠。。
我靠艰额,枉侧,然后我又查 JS 怎么能夠?qū)崿F(xiàn) replaceAll 這個(gè)方法波闹,網(wǎng)上各種自己寫函數(shù)啊,,看得我也暈暈乎乎的丁溅。
后來我的思路又回到了怎樣把變量傳到 replace() 方法里面去。
哎~功夫不負(fù)有心人佑力,看到一篇文章:
http://www.jb51.net/article/40269.htm
文章的最后筋量,給出了 JS 里面正則表達(dá)式的另一個(gè)使用方法,那就是:
string.replace(new RegExp(key,'g'),"b");
這里拯欧,利用 JS 的 RegExp 對(duì)象详囤,將 g 參數(shù)單拿了出來,同時(shí),正則的內(nèi)容可以用變量來代替了2亟恪B÷帷!羔杨!
干的漂亮0齐!6挡摹理澎!
又簡(jiǎn)單,又實(shí)用曙寡!
這里就完成了用 replace() 方法對(duì)變量進(jìn)行全文替換矾端。運(yùn)氣不錯(cuò)
怎么樣,是不是不用自己寫 replaceAll() 了呢卵皂!哈哈