我有一个基本的替换功能,但是我需要它来执行全局替换,因为它似乎在一开始就停止了。我不想用正则表达式来做。在大多数示例中,应用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/