js 全局替換3種方案

JS 字符串替換操作有replace() 方法。但是這個方法有些問題,就是只能替換目標(biāo)字符串中第一個匹配的字符串。 如下例:

<script>
var str = "word-word-word-word";
var strNew = str.replace("word","Excel");
alert(strNew); ????//返回 Excel-word-word-word
</script>

如果要將目標(biāo)字符串全部替換的話,java里可以用replaceAll,但是JS 沒有提供這樣的方法。使用正則表達(dá)式可以達(dá)到replaceAll的效果:

str.replace(/word/g,"Excel") ;

g 的意義是:執(zhí)行全局匹配(查找所有匹配而不是在找到第一個匹配后停止)。

【方法1】
<script>
function replaceAll(str){?
? ? if(str!=null)?
? ? str = str.replace(/word/g,"Excel")?
? ? return str;
}
var str = "word-word-word-word";
var strNew = str.replace("word","Excel");
strNew = replaceAll(str);
alert(strNew);
</script>

【方法2】
以上寫法有個相似的寫法:
str.replace(new RegExp("word","gm"),"Excel")
g 執(zhí)行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。
m 執(zhí)行多行匹配。

【方法3】
除此之外,也可以添加 Stirng對象的原型方法,這樣就可以隨時向使用relpace一樣使用replaceAll:
String.prototype.replaceAll? = function(s1,s2){? ?
? ? return this.replace(new RegExp(s1,"gm"),s2);? ?
}

這樣就可以像使用replace 方法一樣使用replaceAll了。
str.replaceAll("word","Excel");

總結(jié)一下:

1. str.replace(/oldString/g,newString)

2. str.replace(new RegExp(oldString,"gm"),newString)

3. 增加String 對象原型方法 replaceAll

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 100個常用的javascript函數(shù) 1、原生JavaScript實現(xiàn)字符串長度截取 復(fù)制代碼代碼如下: fun...
    老頭子_d0ec閱讀 413評論 0 0
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些閱讀 2,156評論 0 2
  • 假設(shè)用戶需要在?HTML?表單中填寫姓名、地址、出生日期等。那么在將表單提交到服務(wù)器進(jìn)一步處理前,JavaScri...
    結(jié)構(gòu)學(xué)AI閱讀 324評論 0 0
  • 以下是常用的代碼收集,學(xué)習(xí)用。轉(zhuǎn)自豪情博客園 1. PC - js 返回指定范圍的隨機(jī)數(shù)(m-n之間)的公式 re...
    自由加咖啡閱讀 1,126評論 0 1
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,692評論 0 4

友情鏈接更多精彩內(nèi)容