RegEx Заменить и заменить строку - PullRequest
0 голосов
/ 22 октября 2009

У меня есть следующий код:

Regex.Replace(text, words.ToString(), "<dfn title=\"" + this.FindDefinition("$0")  + "\">$0</dfn>", RegexOptions.IgnoreCase | RegexOptions.Compiled);

У меня проблема с методом FindDefinition. Я хотел бы отправить оригинальное слово, чтобы найти и вернуть текст определения. Это возможно, или мне нужно создать шаблон как это:

Regex.Replace(text, words.ToString(), "<dfn title=\"{$0}\">$0</dfn>", RegexOptions.IgnoreCase | RegexOptions.Compiled);

А затем выполнить поиск, чтобы заменить его моим определением?

Я также пробовал с:

Regex.Replace(text, words.ToString(), this.ReplaceWord, RegexOptions.IgnoreCase | RegexOptions.Compiled); 

private string ReplaceWord(Match m)
{
    return "<dfn title=\"" + this.FindDefinition(m.Value) + "\">$0</dfn>";
}

Что отлично работает с методом FindDefinition, но у меня возникла проблема с получением исходного значения.

Что-нибудь, что мне не хватает?

Ответы [ 2 ]

0 голосов
/ 22 октября 2009

Вы создаете XML вручную, это почти всегда неправильно.

Вам нужно будет использовать оценщик (replaceword). Почему бы тебе не сделать что-то вроде:

private string ReplaceWord(Match m)
{
    return "<dfn title=\"" + this.FindDefinition(m.Value) + "\">"+m.Value+"</dfn>";
}

Я бы предпочел использовать что-то вроде m.Groups [0]. Значение и использовать группировку в регулярном выражении.

0 голосов
/ 22 октября 2009

Попробуйте это:

return string.Format("<dfn title=\"{0}\">{1}</dfn>",
                     this.FindDefinition(m.Value),
                     m.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...