简单的正则表达式替换以保持原始字符串

我有这个:

Title = Regex.Replace(Title, s, "" + s + "", RegexOptions.IgnoreCase); 

s是像facebook这样的词。 如果标题是:

 How to make a Facebook game 

我想换成:

 How to make a Facebook game 

即使搜索词是’facebook’(注意大写)。 基本上,我如何保留单词的原始大小写?

另一个例子,搜索词FACEBOOK ,字符串Hello FaCeBoOk转为Hello FaCeBoOk

您可以使用$& 替换 :

 Regex.Replace(Title, s, "$&", RegexOptions.IgnoreCase) 

您可以简单地包含与单词“facebook”匹配的捕获组,并将该捕获组包含为替换字符串的一部分。 这将最终将其包含在最终结果中,与输入中显示的结果完全相同。

 var title = "How to make a Facebook game"; title = Regex.Replace(title, "(facebook)", "$1", RegexOptions.IgnoreCase); 

看到它在行动

 var input = "How to make a Facebook game, do you like facebook?"; var searchFor = "facebook"; var result = Regex.Replace( input, searchFor, "$+", RegexOptions.IgnoreCase); 

唯一重要的是$+ 。 它包含最后获取的文本。 这甚至适用于“如何制作Facebook游戏,你喜欢脸书吗?” 第一个Facebook将保留为大写,第二个将保留为小写。

我要补充一点,如果你只想查看整个单词,那么你可以:

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

这将仅查找字边界上的字符串。