如果它们属于带有Javascript替换的数组,如何替换文本中的单词()

时间:2017-06-13 15:14:35

标签: javascript arrays typescript replace

我有一个像

这样的文字
const a: string = 'I like orange, blue, black, pink, rose, yellow, white, black';

一个字符串

const b: string =['black', 'yellow'];

我想用字符串替换全黑色和黄色到紫色,所以它必须在屏幕上看起来像

'我喜欢橙色,蓝色,紫色,粉红色,玫瑰色,紫罗兰色,白色,紫罗兰色。

我知道函数replace(),但不知道如何传递b作为参数......你能帮助我吗?

如果有可能我想用紫色替换,但是输入字段,所以我可以在文本中输入我自己的颜色......谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用具有给定数组的正则表达式,通过管道连接为正则表达式中的OR符号。

let a = 'I like orange, blue, black, pink, rose, yellow, white, black';
const b = ['black', 'yellow'];
   
a = a.replace(new RegExp(b.join('|'), 'g'), 'violet');

console.log(a);

输入

function change() {
    document.getElementById('output').innerHTML = 
        a.replace(new RegExp(b.join('|'), 'g'), document.getElementById('input').value);
}

let a = 'I like orange, blue, black, pink, rose, yellow, white, black';
const b = ['black', 'yellow'];
<input id="input" type="text" value="" onchange="change();" />
<div id="output"></div>

答案 1 :(得分:0)

replace()不接受数组。但是有一个解决方法。你能做的就是遍历你想要替换的每个单词。

let a: string = 'I like orange, blue, black, pink, rose, yellow, white, black'

const b: string = ['black', 'yellow']

b.forEach(word => {
    a = a.replace(word, 'violet')
})

此外,const是不可变的,因此如果您想要一个可以修改的变量,请确保使用let