javascript - 查找并替换字符串中的所有匹配项

标签 javascript arrays regex javascript-objects vue-filter

我正在尝试创建一个过滤器来替换文章中的字符。

我想在字符串中找到所有匹配的元素并将它们替换为数组中的元素,但它不起作用。如何解决?

//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 &#8211 consectetur...'; // Full str
replacements.forEach(set => {
    newStr = newStr.replace(set.regex, set.replacement);
});

我没有测试上面的代码,但它的本质应该在你的函数中工作得很好。如果您想扩展它,只需扩展您的替换数组即可。

关于javascript - 查找并替换字符串中的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062445/

相关文章:

javascript - Jquery通过 'data-id'选择元素

C 使用指针比较数组元素

javascript - 将 excel 二维数组转换为包含列名的嵌套属性对象

regex - 条形码的正则表达式(12 或 14 位)

php - 使用正则表达式确定一个字符串是否只是一个重复的字符

javascript - 通知: Undefined index: dateform

asp.net - 将 jQuery 引入 ASP.NET(或任何其他外部 JavaScript)的正确方法

javascript - $scope.apply 正在触发 "catch"以及 "then"

c# - System.Int32[] 显示而不是数组元素

javascript - ExtJS - 使用 RegEx 过滤缓冲存储