2010-02-26 46 views
0

我有更長的文字和一些關鍵字。我想在我的文本中突出顯示這些關鍵字。與此代碼沒有問題:如何使用regexp突出顯示帶關鍵字的完整單詞?

 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 
     } 

但是當單詞「爭霸賽」是在文字和關鍵字「遊」變爲了<b>tour</b>nament。我想要突出顯示完整的單詞:<b>tournament</b>

我該怎麼做?

回答

1

您可以在每個關鍵字前後添加一個\w*。這樣,如果整個單詞包含關鍵字,它就會匹配。

編輯:在你的代碼,

keywords = "(\\w*" + r.Replace(keywords, @"\w*|\w*") + "\\w*)"; 

應該這樣做。

+0

你可以在代碼中顯示我嗎? – Philip 2010-02-26 07:55:13

+0

我可以..編輯=) – Jens 2010-02-26 08:06:41

+0

工程就像一個魅力!謝謝! – Philip 2010-02-26 08:09:53

相關問題