替换字符串中的所有匹配项,将数组作为参数

时间:2018-03-27 14:27:36

标签: javascript

有没有办法替换字符串中的所有匹配项,将数组作为replace()方法中的参数。

例如:

拥有此字符串:"ABCDEFG"

拥有这个数组:['A','D','F']

可以用其他东西替换字符串中的相同字母吗?类似的东西:

"ABCDEFG".replace(['A','D','F'], '')

所以最终的结果是:"BCEG"

6 个答案:

答案 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'));