JavaScript的String对象有一个replace()
方法,可以用于替换子字符串。该方法可以接受两个参数。第一个参数可以是字符串或正则表达式模式(regExp对象),第二个参数可以是字符串或函数。下面是一个使用两个字符串参数的replace()
方法的示例。
var text = 'one, two, three, one, five, one';
var new_text = text.replace('one', 'ten');
console.log(new_text)
请注意,如果第一个参数是字符串,只有第一次出现的子字符串会被替换,就像上面的示例一样。要替换所有出现的子字符串,您需要提供一个带有全局标志
g
的正则表达式。如果您不提供全局标志,则即使将正则表达式作为第一个参数提供,也只会替换第一次出现的子字符串。因此,让我们在上面的示例中替换所有出现的
one
。
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, 'ten');
console.log(new_text)
请注意,不要使用引号将正则表达式模式包装起来,否则它将成为字符串而不是RegExp对象。如果要进行不区分大小写的替换,则需要提供附加标志
i,这使得模式不区分大小写。在这种情况下,上述正则表达式将是
/one/gi
。请注意此处添加的
i标记。
如果第二个参数是一个函数且存在匹配项,则该函数将传递三个参数。函数接收的参数包括匹配项、匹配项位置和原始文本。您需要返回应该替换掉该匹配项的内容。例如:
var text = 'one, two, three, one, five, one';
var new_text = text.replace(/one/g, function(match, pos, text){
return 'ten';
});
console.log(new_text)
您可以使用函数作为第二个参数,更好地控制替换文本。
str_replace
函数也可以接受两个长度相同的数组作为参数,第一个数组中的每个字符串会被第二个数组中对应位置的字符串所替换。请参考https://dev59.com/t2445IYBdhLWcg3wDV4P#5069776,这里有我目前找到的唯一能够在javascript中模拟这种精确行为的正确的函数。 - Jules Colle