我有这个:
Title = Regex.Replace(Title, s, "<span style=\"background:yellow\">" + s + "</span>", RegexOptions.IgnoreCase);
其中s
是facebook
之类的字词。如果标题是:
How to make a Facebook game
我想替换为:
How to make a <span style="background:yellow">Facebook</span> game
即使搜索词是'facebook'(注意大写)。基本上,我如何保留单词的原始大写字母?
另一个例子,搜索字词FACEBOOK
,字符串Hello FaCeBoOk
转为Hello <span style="background:yellow">FaCeBoOk</span>
答案 0 :(得分:8)
您可以使用$&
substitution:
Regex.Replace(Title, s, "<span style=\"background:yellow\">$&</span>", RegexOptions.IgnoreCase)
答案 1 :(得分:1)
var input = "How to make a Facebook game, do you like facebook?";
var searchFor = "facebook";
var result = Regex.Replace(
input,
searchFor,
"<span style=\"background:yellow\">$+</span>",
RegexOptions.IgnoreCase);
唯一重要的是$+
。它包含最后获取的文本。这甚至适用于“如何制作Facebook游戏,你喜欢脸书吗?”第一个Facebook将保留为大写,第二个将保留为小写。
我要补充一点,如果你只想查看整个单词,那么你可以制作:
searchFor = @"\b" + searchFor + @"\b";
这将仅查找字边界上的字符串。
答案 2 :(得分:1)
您可以只包含与“facebook”匹配的捕获组,并将该捕获组包含在替换字符串中。这将最终将其包含在输入中出现的最终结果中。
var title = "How to make a Facebook game";
title = Regex.Replace(title,
"(facebook)",
"<span style=\"background:yellow\">$1</span>",
RegexOptions.IgnoreCase);
<强> See it in action 强>