先说说原因:
在chrome 浏览器中使用 replaceAll 报这个错误,是因为chrome 版本过低, 在chrome 85 以上版本才支持
用法
replaceAll(pattern, replacement)const paragraph = "I think Ruth's dog is cuter than your dog!";
console.log(paragraph.replaceAll('dog', 'monkey'));"aabbcc".replaceAll("b", "."); // 'aa..cc'
浏览器支持情况:
那在不直支持该特性的浏览器中有哪些解决方式呢?
直接替代法:
使用regexp全部无差别替换
let unformattedDate = "06=07=2022";
const formattedString = unformattedDate.replace(/=/g, ':');
console.log(formattedString); //06:07:2022
手动定义法:
你可以对其进行自定义:
if(typeof String.prototype.replaceAll === "undefined") {String.prototype.replaceAll = function(match, replace) {return this.replace(new RegExp(match, 'g'), () => replace);}
}
String.prototype.replaceAllTxt = function replaceAll(search, replace) { return this.split(search).join(replace); }
本质上都是一样的,都是用的匹配替换的方式来代替
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll