文档页面:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
let string = ":insertx: :insertx: :inserty: :inserty: :insertz: :insertz:";
let newstring = string.replaceAll(":insertx:", 'hello!');
当我运行这个函数时,我收到了Uncaught TypeError: string.replaceAll is not a function
,也许我误解了什么是原型,但是这个函数看起来是一个可以使用的字符串方法。
我用的是Chrome。
8条答案
按热度按时间oknrviil1#
将
replace
与带有global修饰符的正则表达式一起使用,可以获得更好的浏览器支持(查看MDN上的浏览器兼容性表,查看每个浏览器的哪个版本开始支持replaceAll
方法)。对于更通用的解决方案,我们可以转义正则表达式元字符并使用
RegExp
构造函数,也可以将函数作为多边形填充添加到String.prototype
中。(It必须对要替换的字符串进行转义,以便按字面解释正则表达式中具有特殊含义的字符,例如
.
将仅引用实际的点而不是任何字符。)可在here中找到符合规范的垫片。
qxsslcnc2#
.replaceAll
将从Chrome 85开始提供。当前版本为83。如果你下载了Google Chrome Canary(86版),你会发现你的代码运行得很好。Firefox是78版,而且
.replaceAll
从77版开始就可以使用了,它在78版也可以使用。它在当前的Safari上也可以使用。微软Edge不支持它。您可以在问题的文章底部找到支持的浏览器版本。
dfty9e193#
如果您不想升级Chrome浏览器,也不想使用reg表达式(因为它们的性能较低),您也可以这样做:
当然,如果你想在任何地方都附加String原型,你也可以这样做,但是因为真实的的replaceAll包含了更多的特性(支持正则表达式),所以你可以更安全地这样做:
6ju8rftf4#
您可以自己轻松定义:
并使用它:
polkgigr5#
ES2021 ES12中添加了
str.replaceAll
函数,这就是为什么旧版本的浏览器和nodejs中没有定义它的原因。kyvafyod6#
虽然有点离题,但我无意中在这里为我的用例,这是没有列出,所以这里是为像我这样的人。我需要隐藏一个词,但如果它开始与某些字符,即发展。和,有通配符****,帮助我做到这一点。
注意:注意点。
imzjd6km7#
我也得到了相同的类型错误问题与replace All。我解决了它与replace方法与正则表达式与全局标志集。
yqkkidmi8#
由于我对Regex不太熟悉,我编写了一个简单的变通方法来获得与以前相同的结果。在示例中,我希望用“X”替换所有空格。
因此,只要找到要替换的子字符串,就可以遍历字符串。