有没有替代字符串。替换是大小写
我需要搜索一个字符串,并用从数据库中提取的值替换所有出现的%FirstName%
和%PolicyAmount%
。 问题是FirstName的大写字母各不相同。 这阻止我使用String.Replace()
方法。 我已经看到关于这个主题的网页
Regex.Replace(strInput, strToken, strReplaceWith, RegexOptions.IgnoreCase);
但是,由于某种原因,当我尝试用$0
替换%PolicyAmount%
时,替换从不会发生。 我认为这与美元符号是正则表达式中的保留字符有关。
有没有另外一种方法可以使用,它不涉及清理输入来处理正则表达式特殊字符?
来自MSDN
$ 0 - “替换组号码(十进制)匹配的最后一个子字符串。”
在.NET正则表达式组0始终是整个匹配。 对于文字$你需要
string value = Regex.Replace("%PolicyAmount%", "%PolicyAmount%", @"$$0", RegexOptions.IgnoreCase);
看起来像string.Replace
应该有一个接受StringComparison
参数的重载。 既然没有,你可以尝试这样的事情:
public static string ReplaceString(string str, string oldValue, string newValue, StringComparison comparison)
{
StringBuilder sb = new StringBuilder();
int previousIndex = 0;
int index = str.IndexOf(oldValue, comparison);
while (index != -1)
{
sb.Append(str.Substring(previousIndex, index - previousIndex));
sb.Append(newValue);
index += oldValue.Length;
previousIndex = index;
index = str.IndexOf(oldValue, index, comparison);
}
sb.Append(str.Substring(previousIndex));
return sb.ToString();
}
这是一个扩展方法。 不知道我在哪里找到它。
public static class StringExtensions
{
public static string Replace(this string originalString, string oldValue, string newValue, StringComparison comparisonType)
{
int startIndex = 0;
while (true)
{
startIndex = originalString.IndexOf(oldValue, startIndex, comparisonType);
if (startIndex == -1)
break;
originalString = originalString.Substring(0, startIndex) + newValue + originalString.Substring(startIndex + oldValue.Length);
startIndex += newValue.Length;
}
return originalString;
}
}
链接地址: http://www.djcxy.com/p/21023.html
上一篇: Is there an alternative to string.Replace that is case
下一篇: What is the difference between String and string in C#?