RegEx替换和替换字符串

时间:2009-10-22 08:38:28

标签: c# regex

我有以下代码:

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 :(得分:0)

试试这个:

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

答案 1 :(得分:0)

你正在手工构建XML,这几乎总是完全错误的。

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

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

我倾向于使用像m.Groups [0] .Value这样的东西并在正则表达式中使用分组。