От MSDN
$0 - "Заменяет последней подстрокой, подобранной числом числа группы (десятичное число)".
В группе 0 Регулярных выражений.NET всегда все соответствие. За литеральный $ Вам нужно к
string value = Regex.Replace("%PolicyAmount%", "%PolicyAmount%", @"$0", RegexOptions.IgnoreCase);
Метод регулярного выражения должен работать. Однако то, что можно также сделать, является нижним регистром строка от базы данных, нижний регистр %variables %, который Вы имеете, и затем определяете положения и длины в более низкой строке в корпусе от базы данных. Помните, положения в строке не изменяются просто потому что его более низкое в корпусе.
Тогда использование цикла, который идет наоборот (ее более легкое, если Вы не, необходимо будет провести рабочий подсчет того, куда более поздние точки перемещаются в) удаляют из неболее низкой строки в корпусе от базы данных %variables % их положением и длиной и вставляют заменяющие значения.
Regex.Replace(strInput, strToken.Replace("$", "[$]"), strReplaceWith, 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();
}
Кажется, самый простой метод - это просто использовать метод Replace, который поставляется с .Net и существует со времен .Net 1.0:
string res = Microsoft.VisualBasic.Strings.Replace(res,
"%PolicyAmount%",
"$0",
Compare: Microsoft.VisualBasic.CompareMethod.Text);
Чтобы использовать этот метод, вы должны добавить ссылку на сборку Microsoft.VisualBasic. Эта сборка является стандартной частью среды выполнения .Net, ее не нужно дополнительно загружать или помечать как устаревшую.