我试图在字符串中的两个特定单词之前和之后添加文本。例如。
"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;
}
答案 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);