精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

在 JavaScript 中替換所有指定字符 3 種方法

開發 前端
在 JS 最新的提案String.prototype.replaceAll() 中,它將replaceAll()方法用于字符串。在該提案還沒出來之前,我們來看看在 JS 中有哪些方法可以實現 reaplceAll 的效果。

本文轉載自微信公眾號「大遷世界」,轉載本文請聯系大遷世界公眾號。

在 JS 沒有提供一種簡便的方法來替換所有指定字符。 在 Java 中有一個 replaceAll() ,replaceAll(String regex, String replacement))方法使用給定的參數 replacement 替換字符串所有匹配給定的正則表達式的子字符串。

在 JS 最新的提案String.prototype.replaceAll() 中,它將replaceAll()方法用于字符串。

在該提案還沒出來之前,我們來看看在 JS 中有哪些方法可以實現 reaplceAll 的效果。

第一種:使用 split 和 join 的方法

這種方法,主要包含二個階段:

  • 使用 split 方法,根據指定的字符將字符串分成多個部分。
  • 然后使用 join 方法將分割的多個部分連接在一直,并在它們之間插入指定的字符。

例如,我們將字符串'1+2+3'中的+替換為-。首先,通過split方法根據 +分割符將'1+2+3'分開,得到['1','2','3']。然后通過 join 方法并指定連接字條-,得到結果'1-2-3'。示例如下:

  1. const search = 'duck'
  2. const replaceWith = 'goose'
  3.  
  4. const result = 'duck duck go'.split(search).join(replaceWith); 
  5.  
  6. result; // => 'goose goose go' 

'duck duck go'.split('duck')將字符串分割成幾段:['', ' ', ' go']。['', ' ', ' go'].join('goose') 在元素之間插入'goose'并連接起來,得到'goose goose go'。

最后我們把這種方式封裝成一個幫助函數 replaceAll:

  1. function replaceAll(string, search, replace) { 
  2.   return string.split(search).join(replace); 
  3.  
  4. replaceAll('abba', 'a', 'i');          // => 'ibbi' 
  5. replaceAll('go go go!', 'go', 'move'); // => 'move move move!' 
  6. replaceAll('oops', 'z', 'y');          // => 'oops' 

這種方法需要將字符串轉換為數組,然后再轉換回字符串。這是一種變通方法,但不是一個好的解決方案。

2. 使用全局正則表達式replace()

String.prototype。replace(regExp, replaceWith)搜索正則表達式regExp出現的情況,然后使用replaceWith字符串替換所有匹配項。

必須啟用正則表達式上的全局標志,才能使replace()方法替換模式出現的所有內容,我們可以這樣做:

  • 在正則表達式文字中,將g附加到標志部分:/search/g。
  • 對于正則表達式構造函數,使用 flags 參數:new RegExp('search', 'g')

我們把所有的duck換成goose:

  1. const searchRegExp = /duck/g 
  2. const replaceWith = 'goose' 
  3.  
  4. const result = 'duck duck go'.replace(searchRegExp, replaceWith) 
  5.  
  6. result // 'goose goose go' 

正則表達式文字/duck/g與'duck'字符串匹配,并且啟用了全局模式。

'duck duck go'.replace(/duck/g, 'goose')用'goose'替換所有匹配/duck/g字符串。

通過向正則表達式添加i標志,可以忽略大小寫:

  1. const searchRegExp = /duck/gi; 
  2. const replaceWith = 'goose'
  3.  
  4. const result = 'DUCK duck go'.replace(searchRegExp, replaceWith); 
  5.  
  6. result; // => 'goose goose go' 

再次查看正則表達式:/duck/gi。 正則表達式啟用了不區分大小寫的搜索:i和全局標志g。 /duck/gi匹配'duck',以及'DUCK','Duck'等。

'DUCK duck go'.replace(/duck/gi, 'goose')以不區分大小寫的方式用'goose'替換了/duck/gi`所匹配到的結果。

雖然正則表達式替換了所有出現的字符串,但在我看來,這種方法過于繁瑣。

(1) 字符串中的正則表達式

當在運行時確定搜索字符串時,使用正則表達式方法不方便。 從字符串創建正則表達式時,必須轉義字符-[] / {}()* +? 。 \ ^ $ |,示例如下:

  1. const search = '+' 
  2.  
  3. const searchRegExp = new RegExp(search, 'g') // // 拋出 SyntaxError 異常 
  4. const replaceWith = '-' 
  5.  
  6. const result = '5+2+1',replace(searchRegExp, replaceWith ) 

上面的代碼片段嘗試將搜索字符串'+'轉換為正則表達式。 但是'+'是無效的正則表達式,因此會引發SyntaxError: Invalid regular expression: /+/異常。

(2) 字符串的 replace() 方法

如果replace(search, replaceWith)的第一個參數是字符串,那么該方法只替換search的第一個結果。

  1. const search = 'duck'
  2. const replaceWith = 'goose'
  3.  
  4. const result = 'duck duck go'.replace(search, replaceWith); 
  5.  
  6. result; // => 'goose duck go' 

'duck duck go'.replace('duck','goose')僅將'duck'的首次出現替換為'goose'。

3. replaceAll() 方法

最后,新的提案

String.prototype.replaceAll()(在第3階段)將replaceAll()方法引入到 JavaScript 的字符串中。

replaceAll(search, replaceWith)字符串方法用replaceWith替換所有的search字符串,沒有任何變通方法。

我們把所有的duck換成goose:

  1. const search = 'duck' 
  2. const replaceWith = 'goose'
  3.  
  4. const result = 'duck duck go'.replaceAll(search, replaceWith); 
  5.  
  6. result; // => 'goose goose go' 

'duck duck go'.replaceAll('duck', 'goose')將所有出現的'duck'字符串替換為'goose',這是簡單明了的解決方案。

(1) replaceAll()與replace()的區別

字符串方法replaceAll(search, replaceWith)和replace(search, replaceWith)的行為方式是一樣的,除了兩件事:

  • 如果search參數是一個字符串,那么replaceAll()用replaceWith替換所有出現的search,而replace()只替換第一次出現的search。
  • 如果search參數是一個非全局正則表達式,那么replaceAll()將拋出一個TypeError 異常。

4. 總結

替換所有出現的字符串應該很容易。 但是,JavaScript 很久一段時間沒有提供這種方法。

一種方法是通過搜索字符串將字符串拆分為多個塊,將字符串重新連接,然后在塊之間放置替換字符串:string.split(search).join(replaceWith)。 這種方法有效,但是很麻煩。

另一種方法是將String.prototype.replace()與啟用了全局搜索的正則表達式一起使用:string.replace(/SEARCH/g, replaceWith)。

不幸的是,由于必須轉義正則表達式的特殊字符,因此在運行時無法輕松地從字符串生成正則表達式。 處理正則表達式以簡單地替換字符串的方法非常麻煩。

最后

String.prototype.replaceAll()方法可以輕松地直接替換所有出現的字符串:string.replaceAll(search, replaceWith)。 這是第3階段的提案,但希望很快就會納入新的JavaScript標準。

我的建議是使用replaceAll()來替換字符串。但你需要一個polyfill來使用這個方法。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2020-10-16 18:35:53

JavaScript字符串正則表達式

2021-11-11 14:50:01

JavaScriptarry編程開發

2020-08-01 16:19:13

JavaScript字符串開發

2018-12-19 19:30:46

JavaScript創建對象前端

2009-10-12 10:33:11

Javascript替

2024-08-29 08:04:14

2021-11-05 21:36:59

JavaScript語言開發

2010-11-22 12:04:09

MySQL字段

2018-08-02 09:50:47

Linux命令用戶信息

2010-07-14 16:37:33

SQL Server拆

2020-12-26 14:48:21

UbuntuLinuxDeb文件

2021-05-28 08:23:03

JavaScriptSet編程

2010-06-03 08:55:43

LINQ

2019-06-04 11:17:39

Windows Linux命令

2020-09-03 10:13:49

JavaScript字符串pad

2020-12-14 10:50:13

Linux命令文件

2020-06-18 10:26:43

JavaScript開發技術

2010-11-26 10:29:21

MySQL批量替換

2020-09-19 18:03:42

Docker

2019-06-04 15:34:05

WindowsLinuxLinux命令
點贊
收藏

51CTO技術棧公眾號

国产66精品| 黄色在线网站| 欧美视频在线观看| 亚洲国产成人精品女人久久久| 激情五月婷婷六月| 日韩一区二区三区不卡| 日本欧美一区二区三区| 欧美成人在线网站| a级大片在线观看| www.久久99| 欧美性猛交xxxx免费看| 亚洲精品高清视频| 丰满熟妇人妻中文字幕| 蜜桃久久av一区| 久久久亚洲福利精品午夜| 欧美成人国产精品一区二区| 国产视频一区二| 色婷婷一区二区| 轻点好疼好大好爽视频| 成年网站在线| youjizz久久| 成人精品aaaa网站| 国产专区第一页| 午夜精品一区二区三区国产 | 亚洲综合激情另类小说区| 欧美精品亚洲精品| 亚洲国产成人在线观看| 美腿丝袜一区二区三区| 欧日韩不卡在线视频| 久久久久久久久毛片| 日韩精品一卡| 亚洲人成网站色ww在线| 精品国产免费久久久久久婷婷| 国产精品久久亚洲不卡| 精品国产户外野外| 黄色三级中文字幕| 大地资源网3页在线观看| 久久久精品免费网站| 国产精品美女黄网| 国产成人精品无码高潮| 毛片基地黄久久久久久天堂| 国产91成人在在线播放| 日韩精品成人一区| 影音先锋久久久| 久久91亚洲精品中文字幕奶水| 国产午夜精品福利视频| 国产欧美日韩免费观看 | 国产精品探花在线播放| 欧美大片网站| 欧美日韩视频在线观看一区二区三区 | 狠久久av成人天堂| 色综合视频网站| 中文字幕av久久爽av| 亚洲国产精品久久久天堂| 中文字幕在线观看亚洲| av免费播放网站| av亚洲免费| 中文字幕日韩高清| 欧美日韩中文字幕视频| 精品国产一区二区三区久久久樱花| 国产视频精品一区二区三区| 亚洲国产精品成人综合久久久| 啪啪国产精品| 亚洲男子天堂网| 性の欲びの女javhd| 欧美精品色图| 在线视频一区二区| 国产人与禽zoz0性伦| 亚洲成人国产| 欧美精品成人在线| 日韩人妻无码一区二区三区99| 999在线观看精品免费不卡网站| 国模视频一区二区| 欧美特黄aaaaaa| 日韩在线一二三区| 国产人妖伪娘一区91| 国产乱码久久久久| 成人v精品蜜桃久久一区| 国内精品久久国产| 黄色在线免费观看大全| 国产精品久久久久久久久免费桃花 | 欧美成免费一区二区视频| 日韩在线观看免费全集电视剧网站| 少妇太紧太爽又黄又硬又爽小说| 99精品美女| 久久久久久久久久久成人| 中文字幕视频网站| 麻豆精品视频在线观看| 亚洲综合在线做性| 涩爱av在线播放一区二区| 国产精品乱人伦| cao在线观看| 日本精品另类| 欧美一区二区视频观看视频| 青青草成人免费视频| 久久中文字幕av| 97国产精品久久| 在线观看毛片视频| 成人午夜大片免费观看| 色噜噜色狠狠狠狠狠综合色一| a级在线观看| 91久久国产综合久久| 亚洲精品一二三四| 国精一区二区| 欧美日韩福利视频| 中文字幕欧美在线观看| 成人av免费在线播放| 手机成人在线| 国产高清视频色在线www| 欧美日韩国产精品自在自线| 国产精品一级黄片| 我不卡手机影院| 2019中文字幕免费视频| 国产乱码精品一区二三区蜜臂| 99久久久无码国产精品| 亚洲午夜精品一区二区| 麻豆网在线观看| 激情懂色av一区av二区av| 中文字幕av专区| 极品国产人妖chinesets亚洲人妖| 国产亚洲xxx| 国产精品19乱码一区二区三区| 久久av资源网| 精品国产乱码久久久久久88av | 日韩av在线精品| 国产三级aaa| 国产一区二区高清| 成人黄色片视频网站| 国产毛片在线看| 亚洲午夜在线电影| 国产喷水theporn| 老司机成人在线| 久久久精品久久久久| 黄页网站免费观看| 国产在线一区观看| 欧洲一区二区在线观看| 欧美日韩色网| 欧美日韩高清一区二区不卡| 国产无套精品一区二区三区| 免费看成人吃奶视频在线| 欧美日韩国产91| 亚洲一区二区激情| 久久精子c满五个校花| 黄色激情在线视频| 久久精品免视看国产成人| 亚洲网址你懂得| 91美女免费看| 成人av在线电影| 樱空桃在线播放| 91tv亚洲精品香蕉国产一区| 日韩av网站在线| 国产在线拍揄自揄拍无码视频| 久久精品999| 亚洲国产精品一区二区第四页av| 里番在线播放| 亚洲风情亚aⅴ在线发布| 欧美成人免费观看视频 | 国产精品露脸av在线| 免费av在线电影| 欧美日韩在线视频一区二区| 91丨porny丨对白| 国产一区二区三区久久久久久久久| 成人av网站观看| 日韩三级电影视频| 欧美成人午夜电影| 特级片在线观看| 国产精品中文欧美| 免费一级特黄毛片| 好吊妞视频这里有精品| 九九九久久久久久| 成人激情四射网| 亚洲图片欧美色图| 亚洲av成人片无码| 老牛影视一区二区三区| 日韩高清三级| 免费一区二区三区四区| 亚洲网站在线观看| 亚洲午夜激情视频| 国产精品久久久久久福利一牛影视 | 精品久久久久久国产| 国产精品一级黄片| 久久永久免费| 亚洲视频小说| 国产剧情一区二区在线观看| 欧美国产日韩一区| 免费在线毛片| 欧美裸体一区二区三区| a在线视频播放观看免费观看| 国产精品中文字幕一区二区三区| 大荫蒂性生交片| 亚洲人成网www| 91网站在线看| aa国产成人| 国产亚洲精品美女| 97国产成人无码精品久久久| 一区二区三区久久| 欧美成人精品一区二区综合免费| 久久蜜桃精品| 99精品视频网站| 精品久久97| 国产精品久在线观看| av毛片在线看| 亚洲福利视频在线| 夜夜嗨av禁果av粉嫩avhd| 亚洲最新视频在线观看| 欧美成人三级伦在线观看| 日韩精品电影一区亚洲| 午夜啪啪免费视频| 久久久久久久久久久久久久久久久久久久| 日本欧美黄网站| 国产美女在线观看| 亚洲精品一区久久久久久| 亚洲成a人片在线| 91国内精品野花午夜精品| 国产精品白丝喷水在线观看| 不卡一区二区三区四区| 亚洲免费999| 在线欧美一区| 中国一级大黄大黄大色毛片| 伊人成综合网伊人222| 91午夜理伦私人影院| 亚洲精品永久免费视频| 欧美乱人伦中文字幕在线| 不卡在线视频| 日韩精品免费在线| 国产特级黄色片| 在线中文字幕一区| 国产一级片免费| 国产无人区一区二区三区| 插我舔内射18免费视频| 国产精品影视网| 高清一区在线观看| 亚洲欧美卡通另类91av| 国产青草视频在线观看| 中文字幕免费精品| 亚洲国产日韩综合一区| 色先锋久久影院av| av激情久久| 高清国产一区二区三区四区五区| 欧美中文在线字幕| 九色porny自拍视频在线观看| 久久中文久久字幕| 婷婷成人激情| 亚洲色图13p| 国产91免费看| 亚洲国产精品va在线看黑人动漫| 国产美女www爽爽爽视频| 欧美性色黄大片| 波多野结衣电车痴汉| 精品日本美女福利在线观看| 狠狠躁夜夜躁人人爽天天高潮| 亚洲免费三区一区二区| 日本美女黄色一级片| 亚洲国产精品ⅴa在线观看| 91久久免费视频| 国产精品网友自拍| 中文字幕av久久爽一区| 久久免费视频一区| 久久中文字幕人妻| 91在线视频网址| www.av天天| 国产日产精品1区| 在线免费观看黄色小视频| 91免费观看国产| 李宗瑞91在线正在播放| 欧美激情在线免费观看| 欧美人与性囗牲恔配| 久久久久久久av麻豆果冻| 一卡二卡三卡四卡| 久久久久国产精品麻豆ai换脸| 俄罗斯毛片基地| 国产精品第四页| √天堂中文官网8在线| 亚洲欧美国产77777| 三级全黄做爰视频| 午夜欧美视频在线观看| 日韩欧美一级视频| 色婷婷狠狠综合| 中文字幕一区二区三区波野结| 91久久奴性调教| 一级特黄aaa| 日韩一区二区麻豆国产| 懂色av一区二区三区四区| 亚洲国产天堂久久国产91| 四季av日韩精品一区| 国产视频精品一区二区三区| av播放在线观看| 久久av资源网站| 国产精品186在线观看在线播放| 日本亚洲欧洲色| 日韩精品第一| 96成人在线视频| 日韩欧美黄色| 一区二区在线观| 伊人久久亚洲影院| 日韩肉感妇bbwbbwbbw| 国产成a人亚洲精| 亚洲av成人片色在线观看高潮| 国产三级一区二区三区| 亚洲成人生活片| 亚洲一区二三区| 艳妇乳肉豪妇荡乳av| 精品对白一区国产伦| 高清国产福利在线观看| 欧美日韩成人黄色| 国产国产一区| 国产精品制服诱惑| 日本欧美国产| 大西瓜av在线| 国产一区二区三区久久久| 国产 中文 字幕 日韩 在线| 国产精品久线在线观看| 国产精品成人国产乱| 欧美中文字幕一区二区三区| 亚洲国产剧情在线观看| 亚洲一二在线观看| 欧美videosex性欧美黑吊| 日韩免费在线免费观看| 乱亲女h秽乱长久久久| 一区二区三区四区视频在线观看| 99精品免费| 天堂网成人在线| 2017欧美狠狠色| 久久久久久久久久久久国产| 欧美日韩一区三区四区| 天堂成人在线视频| 九九热这里只有在线精品视| 中文.日本.精品| 麻豆91蜜桃| 国产精品分类| 亚洲综合20p| 国产日本亚洲高清| 国产精品久久久久久久久久久久久久久久久 | 蜜桃狠狠色伊人亚洲综合网站| 91tv精品福利国产在线观看| 日韩av一二三四| 99久久99久久免费精品蜜臀| 日韩一级片大全| 色8久久精品久久久久久蜜 | 亚洲国产精品推荐| 大地资源网3页在线观看| 成人午夜激情免费视频| 成人影院天天5g天天爽无毒影院| 日韩av综合在线观看| 丁香一区二区三区| 国产精品第九页| 欧美成va人片在线观看| 免费人成在线观看播放视频| 国产成人综合亚洲| 老司机成人在线| 欧美视频在线观看网站| 成人的网站免费观看| 黄色一级视频免费| 日韩一区二区在线免费观看| 含羞草www国产在线视频| 国产精品中文字幕在线| 欧美日韩黑人| 国产成人精品视频ⅴa片软件竹菊| 91在线国产观看| 国产一级精品视频| 日韩av影片在线观看| 日韩成人亚洲| 五码日韩精品一区二区三区视频| 天堂一区二区在线| 自拍偷拍视频亚洲| 欧美乱妇一区二区三区不卡视频| 在线免费黄色| 成人免费午夜电影| 亚洲一区 二区 三区| 在线xxxxx| 欧美日韩国产综合新一区| 亚洲日本国产精品| 欧美一级bbbbb性bbbb喷潮片| 欧美一级本道电影免费专区| 91极品视频在线观看| 中文字幕在线观看不卡视频| 国产伦精品一区二区三区免.费| 不卡毛片在线看| 中文字幕亚洲在线观看| 免费午夜视频在线观看| 国产日韩欧美精品综合| 成人黄色免费网| 久久久精品电影| 欧美电影免费网站| av天堂永久资源网| 欧美国产综合一区二区| 成人黄色三级视频| 久国内精品在线| 亚洲三级网页| 奇米影视四色在线| 亚洲国产日日夜夜| 国产在线视频你懂得| 国产精品一区二区性色av| 色综合咪咪久久网| 亚洲国产精品自拍视频| 在线日韩一区二区| 免费人成在线观看播放视频| 国产精品久久波多野结衣| 天堂在线一区二区| 69av视频在线|