我有一个关联数组/对象,如下所示:
mymap = {'e':'f', 'l':'g'};
我希望使用上面的简单密码替换字符串中的所有匹配字符,但只替换现有字符。例如,
input = "hello world";
output = input.map(mymap); //how can I do this?
//output is "hfggo worgd"
平衡性能(对于大输入)和代码大小是有意义的。
我的应用程序正在使用this map用乳胶字符串替换unicode字符,但我很乐意坚持使用更一般的问题。
答案 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]);
}
}