我的JavaScript代码中有以下字符串:

"Test abc test test abc test test test abc test test abc"

做:

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

似乎只删除了上面字符串中第一个出现的abc.

我如何替换它的all个实例?

推荐答案

Update:在最新版本的最流行浏览器中,您可以使用replaceAll 如下所示:

let result = "1 abc 2 abc 3".replaceAll("abc", "xyz");
// `result` is "1 xyz 2 xyz 3"

但是,首先判断Can I use或其他兼容性表,以确保您针对的浏览器首先添加了对它的支持.


有关 node 和与旧浏览器/非当前浏览器的兼容性:

Note: Don't use the following solution in performance critical code.

作为简单文字字符串正则表达式的替代方法,可以使用

str = "Test abc test test abc test...".split("abc").join("");

一般的模式是

str.split(search).join(replacement)

在某些情况下,这比使用replaceAll和正则表达式更快,但在现代浏览器中似乎不再如此.

基准:https://jsben.ch/TZYzj

结论:

如果您有一个性能关键的用例(例如处理数百个字符串),请使用Regexp方法.但是对于大多数典型的用例来说,不必担心特殊字符是值得的.

Javascript相关问答推荐

使用typeof运算符获取对象值类型-接收字符串而不是数组

Next.js Next/Image图像隐含性有任何类型-如何修复?

如何在使用fast-xml-parser构建ML时包括属性值?

当在select中 Select 选项时,我必须禁用不匹配的 Select

docx.js:如何在客户端使用文档修补程序

浮动Div的淡出模糊效果

Angular material 拖放堆叠的牌副,悬停时自动展开&

如何从html元素创建树 struct ?

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

在Reaction中的handleSubmit按钮内,useSelector值仍然为空

同一类的所有div';S的模式窗口

将对象推送到数组会导致复制

为什么云存储中的文件不能公开使用?

如何在Press上重新启动EXPO-AV视频?

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

Django导入问题,无法导入我的应用程序,但我已在设置中安装了它

postman 预请求中的hmac/sha256内标识-从js示例转换

我在哪里添加过滤器值到这个函数?

如何在Web项目中同步语音合成和文本 colored颜色 更改

如何从Reaction-Redux中来自API调用的数据中筛选值