我正在尝试创建一个过滤器来替换文章中的字符。
我想在字符串中找到所有匹配的元素并将它们替换为数组中的元素,但它不起作用。如何解决?
//string to replace -> ”Lorem ipsum dolor sit amet – consectetur adipiscing elit. Suspendisse vitae augue ornare, ultricies ligula at, tempor felis – aenean ac placerat turpis. Nullam finibus lacus sit amet tortor consequat, venenatis malesuada eros volutpat. Proin varius nibh sit amet urna lobortis placerat. Donec rhoncus nibh vitae ultricies rutrum. Curabitur porta nisi eu rhoncus pulvinar. Nulla sit amet sollicitudin odio. Aliquam mi odio, malesuada ac arcu vitae, bibendum convallis risus.„
function charReplace(value) {
let desc = value;
const toReplace = {
'–': '–',
'”': '"',
'„': '"'
};
for (let key in toReplace) {
desc.replace(key, toReplace[key]);
}
return desc;
}
最佳答案
如果您尝试使用字符串进行替换,它只会替换该字符串的第一个实例。如果您改用正则表达式,它将替换该字符串的所有匹配项。这应该相当简单并且正则表达式非常可读。我会做这样的事情:
const replacements = [
{ regex: /–/, replacement: '-' },
{ regex: /”/, replacement: '"' },
{ regex: /„/, replacement: '"' }
];
let newStr = '”Lorem ipsum dolor sit amet – consectetur...'; // Full str
replacements.forEach(set => {
newStr = newStr.replace(set.regex, set.replacement);
});
我没有测试上面的代码,但它的本质应该在你的函数中工作得很好。如果您想扩展它,只需扩展您的替换数组即可。
关于javascript - 查找并替换字符串中的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062445/