正则表达式替换和替换字符串

问题描述:

我有下面的代码:正则表达式替换和替换字符串

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方法工作得很好,但后来我有一个问题让原始值。

我错过了什么?

试试这个:

return string.Format("<dfn title=\"{0}\">{1}</dfn>", 
        this.FindDefinition(m.Value), 
        m.Value); 
+0

你当然是对的..当我早些时候测试这个时,我一定犯了错误。谢谢 :)。 – 2009-10-22 08:53:30

你正在构建的手XML,它几乎总是错误的。

您需要使用评估程序(replaceword)。你为什么不这样做:

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

我倾向于使用类似m.Groups [0] .value的,并使用正则表达式中的分组。