JavaScript + Reg-Ex 中是否有一种简化的方法可以用其替代符号替换集合中每个符号的所有出现?
示例:
"Test: 1, 2, 3 and 1".replace("123", "ABC");
// we need to get: "Test: A, B, C and A";
我的意思是,是否有任何 Reg-Ex 技巧可以避免这里出现 for 循环?无论如何,最有效的方法是什么?
规定:
- 在我的任务中,符号集通常非常短(甚至可能是 3 个符号),并且是静态的,而不是动态的,与所示的示例非常相似。
- 有时需要将符号替换为空“”,即删除。
最佳答案
您可以使用对象文字构建您的替代品。
var map = {'1':'A', '2':'B', '3':'C'};
str = str.replace(/[123]/g, function(k) {
return map[k];
});
或者使用 map 创建自定义函数:
function _replace(str, map) {
var re = new RegExp('['+Object.keys(map).join('')+']','g');
return str.replace(re, function(x) { return map[x] });
}
关于javascript - 替换集合中的单个符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586914/