我有更长的文字和一些关键字。我想在文中突出显示这些关键字。这个代码没有问题:
private static string HighlightKeywords2(string keywords, string text)
{
// Swap out the ,<space> for pipes and add the braces
Regex r = new Regex(@", ?");
keywords = "(" + r.Replace(keywords, @"|") + ")";
// Get ready to replace the keywords
r = new Regex(keywords, RegexOptions.Singleline | RegexOptions.IgnoreCase);
// Do the replace
return r.Replace(text, new MatchEvaluator(MatchEval2));
}
private static string MatchEval2(Match match)
{
if (match.Groups[1].Success)
{
return "<b>" + match.ToString() + "</b>";
}
return ""; //no match
}
但是当“锦标赛”这个词出现在文本中并且关键字“tour”变成<b>tour</b>nament
时。我想强调完整的词:<b>tournament</b>
。
我该怎么做?
答案 0 :(得分:1)
您可以在每个关键字之前和之后添加\w*
。这样,如果整个单词包含关键字,则匹配整个单词。
修改:在您的代码中,
keywords = "(\\w*" + r.Replace(keywords, @"\w*|\w*") + "\\w*)";
应该这样做。