Javascript 在特定字符串之前和之后添加文本
我试图在字符串中的两个特定单词前后添加文本。例如Javascript 在特定字符串之前和之后添加文本,javascript,regex,replace,Javascript,Regex,Replace,我试图在字符串中的两个特定单词前后添加文本。例如 "There is a cat and a dog" 假设字符为“猫”和“狗”,添加的字符为“白”和“黑”。文本应改为 "There is a white cat and a black dog" 我已经设法做到这一点,使用替换,但有任何更干净的方式来做它 function colorData(tagsText) { tagsText = tagsText.replace(/cat/g, "white cat"); tagsT
"There is a cat and a dog"
假设字符为“猫”和“狗”,添加的字符为“白”和“黑”。文本应改为
"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;
}
您可以链接
replace
调用
return tagsText.replace(/cat/g, "white cat").replace(/dog/g, 'black dog');
还可以使用对象保留键值并在回调中使用它
var replacements = {
cat: 'white cat',
dog: 'black dog'
};
function colorData(tagsText) {
return tagsText.replace(/cat|dog/g, (x) => replacements[x]);
}
var替换={
猫:“白猫”,
狗:“黑狗”
};
函数colorData(tagsText){
返回标记text.replace(/cat | dog/g,(x)=>replacements[x]);
}
var str=“有一只猫和一只狗”;
document.body.innerHTML=colorData(str)代码>您可以链接替换
调用
return tagsText.replace(/cat/g, "white cat").replace(/dog/g, 'black dog');
还可以使用对象保留键值并在回调中使用它
var replacements = {
cat: 'white cat',
dog: 'black dog'
};
function colorData(tagsText) {
return tagsText.replace(/cat|dog/g, (x) => replacements[x]);
}
var替换={
猫:“白猫”,
狗:“黑狗”
};
函数colorData(tagsText){
返回标记text.replace(/cat | dog/g,(x)=>replacements[x]);
}
var str=“有一只猫和一只狗”;
document.body.innerHTML=colorData(str)
您可以在replace
函数中使用匿名函数
有一只猫和一只狗;
警报(s.replace(/\b(?:猫狗)\b/g,功能(x){
返回值(x=='cat'?'white':'dark')+x;
}));
您可以在replace
函数中使用匿名函数
有一只猫和一只狗;
警报(s.replace(/\b(?:猫狗)\b/g,功能(x){
返回值(x=='cat'?'white':'dark')+x;
}));代码>如果有许多键->值替换,则可以使用映射:
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;
});
如果有许多键->值替换,则可以使用映射:
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;
});
你自己的方法对我来说看起来很清晰易读。你对它有什么担心?你自己的方法对我来说看起来非常干净易读。您关心的是什么?可能是
但我不确定:(可能是
但我不确定:(很好地理解\b
^1很好地理解\b
^1请注意,\在RegExp
构造函数中使用时应该是双转义的。使用新的RegExp('\\b(“…
此外,不需要捕获group@Tushar那么,我应该使用捕获组还是非捕获组,后者我需要额外的两个字节。如果我想在动态正则表达式中的狗之后添加“黑色”怎么办?@soldiershin您可以删除“+match
部分,并在映射={dog:'dog black'}
注意\n在RegExp
构造函数中使用时,应该进行双转义。使用new RegExp('\\b('…
此外,不需要捕获group@Tushar我应该是捕获组还是非捕获组,后者我需要额外的两个字节。如果我想添加“黑色”怎么办在动态正则表达式?@soldiershin中的狗之后,您可以删除“+match
部分,并在map={dog:'dog black'}