有没有办法替换字符串中的所有匹配项,将数组作为replace()
方法中的参数。
例如:
拥有此字符串:"ABCDEFG"
拥有这个数组:['A','D','F']
可以用其他东西替换字符串中的相同字母吗?类似的东西:
"ABCDEFG".replace(['A','D','F'], '')
所以最终的结果是:"BCEG"
答案 0 :(得分:2)
你可以遍历你的阵列:
var str = "ABCDEFG";
['A','D','F'].forEach(c => str = str.replace(c, '*'))
console.log(str);

答案 1 :(得分:0)
没有。您将不得不遍历您的替换数组,为我担心的数组中的每个项目调用replace()
。或者,您可以尝试将单个字符串数组表示为正则表达式,例如
"ABCDEFG".replace(/(A|D|F)/g, '')
但请注意,根据您的阵列及其中的字符串长度,这可能比许多替换调用效率低得多。
答案 2 :(得分:0)
种类:
"ABCDEFG".replace(new RegExp(['A','D','F'].join("|")), '')
答案 3 :(得分:0)
实际上有一种方法可以从数组中执行此操作。
您需要动态创建一个RegEx:
let arr = ['A','D','F'];
let expression = arr.join('|');
let rx = new RegExp(expression, 'g');
console.log("ABCDEFG".replace(rx,''));

答案 4 :(得分:0)
如果您想要一个数组作为输入:
'ABCDEF'.replace(new RegExp(['A','D','F'].join('|'), 'g'), '')
使用' g' flag,它将取代所有出现的' A' D' D'或者' F'在字符串中。
你也可以用更简单的方式做到这一点:
'ABCDEF'.replace(/A|D|F/g, '')
答案 5 :(得分:0)
这是一个使用与其他答案类似的正则表达式的通用函数,但允许您传入您喜欢的任何替换字符串:
const str = 'ABCDEFG';
const arr = ['A', 'D', 'F'];
function replace(str, arr, r) {
const regex = new RegExp(arr.join('|'), 'g');
return str.replace(regex, p => r);
}
console.log(replace(str, arr, ''));
console.log(replace(str, arr, 'bob'));