精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

黄色影院在线看| 99久久久久久久久| 999色成人| 亚洲视频小说图片| 91av免费看| 久久久美女视频| 国产精品一线| 在线区一区二视频| 日韩性感在线| 99视频国产精品免费观看a| 欧美激情五月| 精品视频久久久久久| 国产伦精品一区二区三区四区视频_| 天天操天天操天天操| 视频一区二区三区在线| 久久久精品一区| 岛国精品资源网站| 欧美成人aaa| 亚洲成人精品在线观看| 欧美黑人3p| 国产精品乱码一区二区| 欧美a级片网站| 精品国产青草久久久久福利| 黑森林福利视频导航| 国产调教视频在线观看| 成人免费电影视频| 国产激情999| 国产精品suv一区二区69| 区一区二视频| 亚洲国产欧美精品| 亚洲天堂av一区二区| 久久亚洲导航| 国产精品久久久久9999吃药| 含羞草久久爱69一区| 怡红院男人天堂| 日韩香蕉视频| 色偷偷88888欧美精品久久久| 人妻体内射精一区二区三区| 在线看欧美视频| 亚洲国产成人91porn| 一区二区三区四区国产| 人成在线免费视频| 粉嫩av一区二区三区在线播放| 欧美与欧洲交xxxx免费观看| 精品在线视频观看| 国产精品99视频| 亚洲欧美日韩成人| 日本人添下边视频免费| 精品视频成人| 欧美精品一二三| 无码人妻丰满熟妇区毛片| 四虎影院观看视频在线观看| 国产女同性恋一区二区| 九色综合日本| 欧美自拍偷拍第一页| 激情av综合网| 成人福利网站在线观看11| 久草视频免费播放| 欧美二区视频| 久久国内精品一国内精品| 中文字幕乱视频| 2020国产精品极品色在线观看| 欧美精品久久久久久久多人混战| 国产精品视频分类| 欧美xnxx| 欧美午夜宅男影院| 中文字幕国产免费| 国产三级一区| 欧美日韩免费观看一区三区| 日韩一级理论片| 欧美aaa视频| 在线精品视频一区二区三四| 国产麻花豆剧传媒精品mv在线| 蜜桃av在线| 精品高清一区二区三区| 伊人成色综合网| 都市激情亚洲一区| 在线中文字幕一区| 精品亚洲一区二区三区四区| 欧美激情三区| 91精品国产一区二区三区蜜臀 | 国产一区二区三区日韩精品| 日韩福利视频在线观看| 国产精品探花一区二区在线观看| 精品国产导航| 亚洲毛片在线免费观看| 9.1成人看片| 精品国产aⅴ| 搡老女人一区二区三区视频tv| 国产成人免费在线观看视频| 亚洲精品小说| 免费不卡欧美自拍视频| 国产在线观看免费视频今夜| 亚洲精品男同| 国产精品福利在线观看| 亚洲手机在线观看| 国产一区二区0| 国产偷久久久精品专区| av在线免费观看网| 亚洲va欧美va人人爽| xxww在线观看| 免费成人蒂法| 久热精品视频在线观看| 国产又黄又猛又粗又爽| 国产精品一区一区| 日韩欧美在线电影| 超碰97免费在线| 欧美军同video69gay| 蜜桃精品成人影片| 欧美日韩99| 国产精品偷伦免费视频观看的| 殴美一级特黄aaaaaa| 国产精品福利一区二区三区| 免费国产a级片| 日韩免费成人| 日韩在线视频一区| 日韩三级一区二区| 成人免费视频国产在线观看| 中文字幕一区二区三区5566| 欧美日韩精品免费观看视完整| 精品久久久久久久人人人人传媒 | 日本一本在线视频| 精品日韩欧美一区| 国产69久久精品成人| 亚洲欧美激情国产综合久久久| 国产精品福利在线播放| 无码少妇一区二区三区芒果| 色天下一区二区三区| 欧美黑人xxx| 国产特级黄色片| 国产精品久久久久aaaa樱花| 天天爽天天爽夜夜爽| 一区二区美女| 欧美专区日韩视频| 天堂网在线观看视频| 亚洲午夜精品17c| 深夜福利网站在线观看| 久久视频精品| 国产日韩精品一区二区| h网站在线免费观看| 日本高清无吗v一区| 90岁老太婆乱淫| 亚洲伊人网站| 欧美一级二级三级| 欧美日韩不卡| 伊人亚洲福利一区二区三区| 波多野结衣爱爱| 欧美经典一区二区三区| 91插插插插插插插插| 日韩在线综合| 91久久国产婷婷一区二区| 黄色免费网站在线观看| 欧美一区二区三区婷婷月色 | 欧美日韩精品二区| 国产黄色三级网站| 在线亚洲激情| 欧美中日韩免费视频| 中老年在线免费视频| 精品伊人久久97| 无码人妻一区二区三区免费 | 久久久久久久久久网站| 国产一区二区三区四区五区入口| 日韩中文在线字幕| 国产精品白浆| 亲子乱一区二区三区电影| 国产一区二区三区福利| 欧美三区免费完整视频在线观看| 精品国产大片大片大片| 国产一区二区三区在线观看免费视频| 精品嫩模一区二区三区| 国产色噜噜噜91在线精品| 欧美亚洲激情在线| 日本激情在线观看| 欧美不卡在线视频| 久久久久99精品成人片三人毛片| 国产日韩欧美综合在线| 亚洲免费黄色网| 免费中文字幕在线观看| 久久久综合色| 51精品国产人成在线观看| 蜜乳av一区| 亚洲欧美视频在线| 97人妻一区二区精品免费视频 | 久久久久久久久久久网| 成人精品一区二区三区四区 | 免费成人你懂的| 男女h黄动漫啪啪无遮挡软件| 综合久久成人| 国产精品久久久久不卡| 综合图区亚洲| 国产偷亚洲偷欧美偷精品| 中文字幕精品无码亚| 亚洲综合色成人| 国产精品成人无码免费| 国产精品亚洲第一区在线暖暖韩国| 少妇高潮喷水在线观看| 日韩精品欧美| 精品久久久久久一区二区里番| 日本在线中文字幕一区二区三区| 欧美乱大交xxxxx另类电影| 青青草av免费在线观看| 日韩你懂的在线播放| 日韩电影在线观看一区二区| 一区二区久久久| 国产精品视频在| 99视频一区二区| 色网站在线视频| 久久精品电影| youjizz.com在线观看| 日本久久综合| 美女三级99| 国产精品1luya在线播放| 国产日韩中文在线| 在线看片国产福利你懂的| 久国内精品在线| 日韩av中文| 亚洲天堂男人天堂| 手机看片1024国产| 日韩精品一区二区三区中文精品| 中文在线字幕免费观| 欧美日韩在线视频首页| 清纯粉嫩极品夜夜嗨av| 国产精品久久夜| 三区四区在线观看| 99久久久精品免费观看国产蜜| 特级西西444www| 免费高清视频精品| 国产v亚洲v天堂无码久久久| 黄色成人精品网站| 日本老太婆做爰视频| 天天综合一区| 自拍另类欧美| 日韩欧美精品综合| 欧美下载看逼逼| 青青草这里只有精品| 国产一级二级三级精品| 亚洲福利合集| 亚洲综合最新在线| 爱情电影网av一区二区| 成人看片人aa| 日韩三区四区| 成人黄色影片在线| 伊人久久综合网另类网站| 成人a视频在线观看| 欧美天堂在线| 国产在线精品播放| 99精品美女视频在线观看热舞| 国产日韩av在线| 成人在线视频区| 成人精品视频久久久久| 99久久久国产| 99视频免费观看蜜桃视频| 激情不卡一区二区三区视频在线| 91久久久久久久久久| 精品国产不卡一区二区| 91国产在线播放| 亚洲高清在线一区| 国产精品播放| 青青久久av| 日本电影一区二区三区| 不卡在线一区二区| 在线看无码的免费网站| 91精品国产视频| 精品成在人线av无码免费看| 亚洲经典在线看| 337p粉嫩大胆噜噜噜鲁| 日日夜夜精品免费视频| 在线观看国产福利| 成人在线综合网| 亚洲午夜久久久久久久久红桃| 国产欧美综合色| 91精品一区二区三区蜜桃| 一级女性全黄久久生活片免费| 日韩三级小视频| 91久久精品午夜一区二区| 一卡二卡三卡在线| 欧美白人最猛性xxxxx69交| 神马一区二区三区| 尤物tv国产一区| 91麻豆一二三四在线| 久久久欧美精品| 美女100%一区| 91在线视频精品| 天天久久夜夜| 做爰高潮hd色即是空| 亚洲精品色图| 手机av在线免费| 99精品视频一区| 日韩av毛片在线观看| 亚洲国产视频a| 中文在线免费观看| 亚洲精品一区二区精华| 国产九九在线| 久久久久久国产精品| 日本成人片在线| 国产精品乱码一区二区三区| 欧美日韩在线二区| 人人妻人人澡人人爽欧美一区双| 日韩精品一级中文字幕精品视频免费观看 | 欧美日韩大片| 国产欧美精品一区二区| 伊人久久大香| 欧美日韩亚洲一区二区三区在线观看| 我不卡影院28| 玩弄japan白嫩少妇hd| 国产成人免费视频| 日本黄色激情视频| 图片区小说区国产精品视频 | 亚洲精品国产综合久久| 日韩在线免费电影| 8x海外华人永久免费日韩内陆视频| 亚洲成人精品综合在线| 免费观看国产成人| 欧美午夜不卡| 中文字幕免费高清在线| 久久久久综合网| 精品少妇爆乳无码av无码专区| 欧美美女网站色| 加勒比一区二区三区在线| 欧美激情一区二区三级高清视频| 国产精品久久久久久妇女| 精品视频导航| 亚洲清纯自拍| 韩国三级与黑人| 中文字幕在线一区免费| 中文字幕在线观看视频免费| 日韩精品一区二区视频| tube8在线hd| av免费观看久久| 亚洲成人一区| 特黄视频免费观看| 国产精品人成在线观看免费 | 天堂精品中文字幕在线| 亚洲一级av无码毛片精品| 亚洲自拍欧美精品| 国产成人麻豆精品午夜在线| 日韩中文字幕在线视频播放| 中韩乱幕日产无线码一区| 日本一区视频在线观看| 久久精品主播| 一区二区三区免费在线观看视频| 亚洲高清一区二区三区| 亚洲成人一二三区| 精品自拍视频在线观看| 日韩精品久久久久久久软件91| 亚洲精品偷拍视频| 激情另类小说区图片区视频区| 顶级黑人搡bbw搡bbbb搡| 欧美吻胸吃奶大尺度电影| 国产69精品久久app免费版| 日韩av免费网站| 蜜桃tv一区二区三区| 中文字幕乱码人妻综合二区三区| 91天堂素人约啪| 成人午夜精品视频| 自拍偷拍亚洲精品| 91精品国产色综合久久不卡粉嫩| 亚洲第一页在线视频| 国产一区二区三区香蕉| 久久久精品国产sm调教| 亚洲国产精品久久| 亚洲最大网站| 性欧美.com| 国产酒店精品激情| 国产精品30p| 亚洲人午夜精品| 五月天色综合| 欧美少妇在线观看| www.色精品| 国产一区二区视频免费| 色999日韩欧美国产| 日韩视频一二区| 国自产拍偷拍精品啪啪一区二区| 国产丝袜在线精品| 国产美女永久免费| 久久久久久免费精品| 久操成人av| 性久久久久久久久久久久久久| 亚洲国产精品久久人人爱蜜臀| 欧美xxx.com| 国产在线精品一区免费香蕉 | 亚洲风情第一页| 欧洲成人免费视频| 国产精品成久久久久| 日本久久久久久久久久| 色噜噜狠狠色综合欧洲selulu| 国产成人午夜| 欧美精品一区三区在线观看| 久久99精品国产麻豆婷婷| 国产一级片播放| 一区二区三区四区精品| 91在线一区| 亚洲 欧美 日韩系列| 亚洲一区二区三区四区五区黄| 国产区在线视频| 国产精品有限公司| 蜜桃av一区二区三区电影| 日本最新中文字幕| 久久精品影视伊人网| 九热爱视频精品视频|