在特定字符串javascripts之前和之后添加文本

时间:2016-04-20 06:00:31

标签: javascript regex replace

我试图在字符串中的两个特定单词之前和之后添加文本。例如。

"There is a cat and a dog"

让我们说人物是" cat"和#34;狗"和补充是"白色"和"黑色"。文字应改为

"There is a white cat and a black dog"

我已经成功使用替换,但有任何更清洁的方法来做它。

function colorData(tagsText)
{
    tagsText = tagsText.replace(/cat/g, "white cat");
    tagsText = tagsText.replace(/dog/g, "black dog");
    return tagsText;
} 

3 个答案:

答案 0 :(得分:5)

您可以在replace函数中使用匿名函数。

var s = "There is a cat and a dog";
alert(s.replace(/\b(?:cat|dog)\b/g, function(x){
   return (x == 'cat' ? 'white ' : 'dark ' ) + x;
}));

答案 1 :(得分:4)

如果你有很多钥匙 - >值替换你可以使用地图:

var map = { cat: 'white', dog: 'black' };
tagsText.replace(/\b(cat|dog)\b/g, function(match) {
  return map[match] + " " + match;
});

或动态正则表达式:

var regex = new RegExp('\\b(' + Object.keys(map).join('|') + ')\\b', 'g');
tagsText.replace(regex, function(match) {
  return map[match] + " " + match;
});

答案 2 :(得分:2)

您可以链接replace来电

return tagsText.replace(/cat/g, "white cat").replace(/dog/g, 'black dog');

您还可以使用对象来保留键值,并在replace回调中使用它。

var replacements = {
    cat: 'white cat',
    dog: 'black dog'
};

function colorData(tagsText) {
    return tagsText.replace(/cat|dog/g, (x) => replacements[x]);
}



var replacements = {
    cat: 'white cat',
    dog: 'black dog'
};

function colorData(tagsText) {
    return tagsText.replace(/cat|dog/g, (x) => replacements[x]);
}


var str = "There is a cat and a dog";

document.body.innerHTML = colorData(str);