了解 JavaScript 字符串的 replace() 方法
找到当前字符串中 第一个 出现的 str1
并将其替换为 str2
。
返回一个新字符串,而不对原字符串进行修改。
'JavaScript'.replace('Java', 'Type') //'TypeScript'
您可以将正则表达式作为第一个参数传递:
'JavaScript'.replace(/Java/, 'Type') //'TypeScript'
replace()
仅替换 第一个 出现的字符串,除非您使用正则表达式作为搜索字符串,并指定全局 (/g
) 选项:
'JavaScript JavaX'.replace(/Java/g, 'Type') //'TypeScript TypeX'
第二个参数可以是一个函数。当找到匹配项时(或者对于使用全局正则表达式 /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
如果您的正则表达式具有捕获组,那些值会作为参数传递给匹配参数之后:
'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