关于字符串的JavaScript replace()方法

92 阅读1分钟

找出所有关于字符串的JavaScript replace()方法

找到当前字符串中第一次出现的str1 ,并将其替换为str2

返回一个新的字符串,而不改变原来的字符串。

'JavaScript'.replace('Java', 'Type') //'TypeScript'

你可以传递一个正则表达式作为第一个参数。

'JavaScript'.replace(/Java/, 'Type') //'TypeScript'

replace() 将只替换第一次出现的字符串,除非你使用正则表达式作为搜索字符串,并且你指定了全局 ( ) 选项。/g

'JavaScript JavaX'.replace(/Java/g, 'Type') //'TypeScript TypeX'

第二个参数可以是一个函数。这个函数将在找到匹配的时候被调用(如果使用全局的regex/g ,则找到一个匹配就调用一次),有一些参数。

  • 匹配模式的字符串
  • 一个整数,用于指定匹配发生在字符串中的位置
  • 字符串

该函数的返回值将替换字符串中的匹配部分。

例子。

'JavaScript'.replace(/Java/, (match, index, originalString) => {
  console.log(match, index, originalString)
  return 'Test'
}) //TestScript

这也适用于正则字符串,而不仅仅是重合词。

'JavaScript'.replace('Java', (match, index, originalString) => {
  console.log(match, index, originalString)
  return 'Test'
}) //TestScript

如果你的regex有捕获组,这些值将作为参数在匹配参数之后传递。

'2015-01-02'.replace(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/, (match, year, month, day, index, originalString) => {
  console.log(match, year, month, day, index, originalString)
  return 'Test'
}) //Test