JavaScript 之旅(26):String.prototype.replaceAll() | Replaceall 多 個
本篇介紹ES2021(ES12)提供的String.prototype.replaceAll()。將一個字串中的指定子字串,取代成另一個字串,是很常見的字串處理情境。例如:要將URL的query字串q=query+string+parameters中的+字元替換成空白字元://原字串q=query+string+parameters//替換成q=querystringparameters常見有以下作法:String.prototype.replace()String.prototype.split()+Array.prototype.join()下面分別說明這兩種作法的小問題。過去的String.prototype.replace()若要一次替換多個子字串,String.prototype.replace()的第一個參數只能使用設定global...
本篇介紹 ES2021 (ES12) 提供的 String.prototype.replaceAll()。
將一個字串中的指定子字串,取代成另一個字串,是很常見的字串處理情境。
例如:要將 URL 的 query 字串 q=query+string+parameters 中的 + 字元替換成空白字元:
// 原字串 q=query+string+parameters // 替換成 q=query string parameters常見有以下作法:
String.prototype.replace() String.prototype.split() + Array.prototype.join()下面分別說明這兩種作法的小問題。
過去的 String.prototype.replace()若要一次替換多個子字串,String.prototype.replace() 的第一個參數只能使用設定 global flag 的 RegExp,而不是用字串。因為字串只能替換第一個子字串,不能一次替換多個子字串。
let query = q=query+string+parameters; let queryWithSpaces = query.replace(/+/g, ); console.log(queryWithSpaces); // q=query string parameters這種方法的缺點是要用 RegExp,並且是轉義過的字元,像此範例用的是轉義過的 + 字元 (因為在 RegExp 的 pattern 中,+ 有特殊的意義,代表 match 一個以上)。
過去的 String.prototype.split() + Array.prototype.join()另一種常見的作法是同時使用 String.prototype.split() 和 Array.prototype.join()
let query = q=query+string+parameters; let queryW...