iT邦幫忙

2023 iThome 鐵人賽

DAY 12
0
自我挑戰組

從0到有學習JavaScript系列 第 12

第三章 型別、值和變數-問題筆記 replace

  • 分享至 

  • xImage
  •  

問題一、字串replace 用法?

  1. 經過replace替換過後,會產生一個新字串,將舊的字串給洗掉。
  2. replace可以用來替代字串,被替代的項目若在字串中出現兩次,只有第一次出現的字串被取代。
  3. replace(pattren, replacement)
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';    //這是一個字串格式

console.log(p.replace('dog', 'monkey'));
// Expected output: "The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"   只有第一次出現的字串被取代

const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
// Expected output: "The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"  只有第一次出現的字串被取代

第三個例子中,const regex = /Dog/i;:這是一個正規表達式 regex,它是不區分大小寫(i 標誌)的,並且尋找 "Dog" 這個文字。將第一個dog替換成ferret後,再回傳原來的字串。

問題二、replace (pattern, replacement) 是什麼?
(一)pattern :

  • 字串
  • 符號取代(典型例子:正規表達式)
  • 如果不具有Symbol.replace的物件,就會被強制轉換成字串

(二)replacement :

  1. 是字串的話,replacement可以包含下列幾種模式 ( Specifying a string as the replacement ):
$$ : 插入字符 "$" 本身。
$& : 插入
$`
$'
$n
$<Name>
  1. 是函式的話,則將為每個匹配的地方調用它,並回傳值。

  2. pattern 如果是" ",會在字串前面加上空格

"xxx".replace("", "_"); //   "_xxx"

這個程式碼需要參考上面的Specifying a string as the replacement:

"foo".replace(/(f)/, "$2");
// "$2oo"; the regex doesn't have the second group
在這個正規表達式中,只有一個 Capturing group,所以直接替換

"foo".replace("f", "$1");
// "$1oo"; the pattern is a string, so it doesn't have any groups
因為pattern只是一個字串,而非正規表達式,故沒有Capturing group

"foo".replace(/(f)|(g)/, "$2");
// "oo"; the second group exists but isn't matched
有兩個Capturing group

Reference
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace


上一篇
第三章 型別、值和變數-問題筆記 String part2
下一篇
第三章 型別、值和變數-問題筆記 Capturing group
系列文
從0到有學習JavaScript31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言