使用关联数组映射替换字符串中的字符

时间:2015-03-10 11:17:37

标签: javascript replace associative-array

我有一个关联数组/对象,如下所示:

mymap = {'e':'f', 'l':'g'};

我希望使用上面的简单密码替换字符串中的所有匹配字符,但只替换现有字符。例如,

input = "hello world";
output = input.map(mymap); //how can I do this?
//output is "hfggo worgd"

平衡性能(对于大输入)和代码大小是有意义的。


我的应用程序正在使用this map用乳胶字符串替换unicode字符,但我很乐意坚持使用更一般的问题。

2 个答案:

答案 0 :(得分:1)

以下作品:

mymap = {'e':'f', 'l':'g'};

var replacechars = function(c){
    return mymap[c] || c;
};

input = "hello world";
output = input.split('').map(replacechars).join('');

虽然必须拆分然后加入输入似乎非常圆,特别是如果这应用于文本墙。

答案 1 :(得分:1)

另一种方法是循环对象属性并为每次替换使用正则表达式:

var input = 'hello world';
var output = '';

for (var prop in mymap) {
    if (mymap.hasOwnProperty(prop)) {
        var re = new RegExp(prop, 'g');
        output = input.replace(re, mymap[prop]);
    }
}