使用RegEx和IgnoreCase替换单词,但使用正确找到的单词大小写替换

时间:2013-08-20 11:31:19

标签: c# regex replace

所以我在忽略大小写的情况下替换字符串中所有单词的实例:

        public static String ReplaceAll(String Input, String Word)
    {
        string Pattern = string.Format(@"\b{0}\b", Word);
        Regex rgx = new Regex(Pattern, RegexOptions.IgnoreCase);            
        StringBuilder sb = new StringBuilder();
        sb.Append(rgx.Replace(Input, string.Format("<span class='highlight'>{0}</span>", Word)));
        return sb.ToString();             
    }

我还需要更换以保留找到的单词的情况,所以如果我正在寻找&#39;这个&#39;和RegEx发现&#39;这个&#39;它将取代所发现的单词作为&#39;这个&#39;而不是&#39;这个&#39;,我之前已经做过这件事了,但几年前还是用javascript,再次尝试解决这个问题。

2 个答案:

答案 0 :(得分:3)

public static string ReplaceAll(string source, string word)
{
    string pattern = @"\b" + Regex.Escape(word) + @"\b";
    var rx = new Regex(pattern, RegexOptions.IgnoreCase);
    return rx.Replace(source, "<span class='highlight'>$0</span>");
}

答案 1 :(得分:0)

以下几乎是您正在寻找使用Regex的内容。唯一的考虑因素是它保留了第一个字符的大小写,所以如果你在中间有一个大写字母,它看起来就不会保留它。

Replace Text While Keeping Case Intact In C Sharp