Regex - нюанс
От: Аноним  
Дата: 16.07.10 10:25
Оценка:
Есть

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()));


То все работает, но это костыль. как тут правильно поступить?
Спасибо!
Re: Regex - нюанс
От: x64 Россия http://x64blog.name
Дата: 16.07.10 18:14
Оценка:
А>То все работает, но это костыль. как тут правильно поступить?

Экранировать символы надо в таких случаях:

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().
JID: x64j@jabber.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.