gpt4 book ai didi

javascript - 如何替换 JavaScript 中出现的所有字符串?

转载 作者:行者123 更新时间:2023-11-28 05:42:32 27 4
gpt4 key购买 nike

给定一个字符串:

s = "Test abc test test abc test test test abc test test abc";

这似乎只删除了上面字符串中第一次出现的 abc:

s = s.replace('abc', '');

如何替换它的所有出现?

最佳答案

截至 2020 年 8 月: Modern browsers have support对于 String.replaceAll() method由 ECMAScript 2021 语言规范定义。

<小时/>

对于旧版/旧版浏览器:

function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

以下是这个答案的演变过程:

str = str.replace(/abc/g, '');

回应评论“如果'abc'作为变量传递会怎样?”:

var find = 'abc';
var re = new RegExp(find, 'g');

str = str.replace(re, '');

回应Click Upvote的评论,您可以进一步简化它:

function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}

注意:正则表达式包含特殊(元)字符,因此在上面的 find 函数中盲目传递参数而不对其进行预处理是危险的。转义这些字符。 Mozilla Developer Network 中对此进行了介绍。的JavaScript Guide on Regular Expressions ,其中他们提供了以下实用函数(自最初编写此答案以来,该函数已更改至少两次,因此请务必检查 MDN 站点是否有潜在的更新):

function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}

因此,为了使上面的replaceAll()函数更安全,如果还包含escapeRegExp,则可以将其修改为以下内容:

function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}

关于javascript - 如何替换 JavaScript 中出现的所有字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com