gpt4 book ai didi

Javascript .replaceAll() 不是函数类型错误

转载 作者:行者123 更新时间:2023-12-03 06:53:23 25 4
gpt4 key购买 nike

文档页面: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 .也许我误解了原型(prototype)是什么,但该函数似乎是一个可供使用的字符串方法。
我正在使用 Chrome。

最佳答案

使用 replace 使用带有全局 modifier 的正则表达式以获得更好的浏览器支持。 (检查 browser compatibility table on MDN 以查看每个浏览器的哪个版本开始支持 replaceAll 方法。)

let string = ":insertx: :insertx: :inserty: :inserty: :insertz: :insertz:";
let newstring = string.replace(/:insertx:/g, 'hello!');
console.log(newstring);

对于更通用的解决方案,我们可以转义正则表达式元字符并使用 RegExp构造函数。您也可以将函数添加到 String.prototype作为一个polyfill。
(必须对要替换的字符串进行转义,以便正则表达式中具有特殊含义的字符将按字面意思解释,例如 . 将仅指实际的点而不是任何字符。)

//Taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
function replaceAll(str, match, replacement){
return str.replace(new RegExp(escapeRegExp(match), 'g'), ()=>replacement);
}

console.log(replaceAll('a.b.c.d.e', '.', '__'));
console.log(replaceAll('a.b.c.d.e', '.', '$&'));

可以找到符合规范的垫片 here .

关于Javascript .replaceAll() 不是函数类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62825358/

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