2011-09-11 17 views
6

我有這樣的:簡單的正則表達式替換,以保持原始字符串

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>

回答

6

您可以使用該$&substitution

Regex.Replace(Title, s, "<span style=\"background:yellow\">$&</span>", RegexOptions.IgnoreCase) 
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嗎?」第一個Facebook將保持大寫,第二個將保持小寫。

我會補充說,如果你想只查找整個單詞,那麼你可以做:

searchFor = @"\b" + searchFor + @"\b"; 

這將只尋找那些字邊界上的字符串。

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