我有一个基本的替换功能,但是我需要它来执行全局替换,因为它似乎在一开始就停止了。我不想用正则表达式来做。在大多数示例中,应用global属性似乎很容易,但是我传入了一个变量作为要替换的值,并且/ g没有任何影响。我究竟做错了什么?这是不带/ g的示例:

测试字符串

"Why is my ^%friend so ^%? Maybe I need a ^!% one, abrand^!% one"


简单更换功能

function translate(oddStr) {
    var tagDictionary = {};
        tagDictionary['^%'] = 'odd';
        tagDictionary['^!%'] = 'new';

    Object.keys(tagDictionary).forEach( function (tag) {
        oddStr = oddStr.replace(tag, tagDictionary[tag]);
    });

    return oddStr;
};


此函数按预期返回每个替换的第一个实例。如何将/ g应用于forEach中的tag变量?

最佳答案

像这样使用split-join组合:

oddStr = oddStr.split(tag).join(tagDictionary[tag]);

关于javascript - 如何对变量执行全局替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41912994/

10-13 08:53