使用regex c#替换Exact匹配字符串

时间:2015-03-04 10:23:47

标签: c# regex

这是我的代码段:

public static class StringExtensions
{
    public static string SafeReplace(this string input, string find, string replace, bool matchWholeWord)
    {
        string textToFind = matchWholeWord ? string.Format(@"\b{0}\b", find) : find;
        return Regex.Replace(input, textToFind, replace);
    }
}
selectColumns = selectColumns.SafeReplace("RegistrantData.HomePhone","RegistrantData.HomePhoneAreaCode + '-' + RegistrantData.HomePhonePrefix + '-' + RegistrantData.HomePhoneSuffix", true);

然而,这也取代了字符串“RegistrantData_HomePhone”。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你应该逃避文字:

string textToFind = matchWholeWord ? string.Format(@"\b{0}\b", Regex.Escape(find)) : Regex.Escape(find);

Regex.Escape会替换(例如).RegistrantData**.**HomePhone) \.(以及许多其他序列)

可能是个好主意
return Regex.Replace(input, textToFind, replace.Replace("$", "$$"));

因为$Regex.Replace中具有特殊含义(请参阅Handling regex escape replacement text that contains the dollar character)。请注意,要进行替换,您无法使用Regex.Escape