Есть
Regex r = new Regex("(...)(..)(...)");
Делаю Replace:
int a = 10;
text = r.Replace(text, String.Format(@"$1{0}$3", a.ToString()));
В итоге, мне вместо $1 программа пытается подставить $110 которого разумеется нету.
Если поставить пробел:
text = r.Replace(text, String.Format(@"$1 {0}$3", a.ToString()));
То все работает, но это костыль. как тут правильно поступить?
Спасибо!
А>То все работает, но это костыль. как тут правильно поступить?
Экранировать символы надо в таких случаях:
int a = 10;
string TempString = a.ToString ();
string ReplaceString = null;
foreach (char Ch in TempString)
{
if (Char.IsDigit (Ch))
{
ReplaceString += '\\' + Ch;
}
else
{
ReplaceString += Ch;
}
}
text = r.Replace(text, String.Format(@"$1{0}$3", ReplaceString));
Для литералов типа цифр или символов достаточно сделать так, как я показал. Если экранимровать следует только метасимволы, то лучше воспользоваться методом
Regex.Escape().