我有以下代码:
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方法可以正常工作,但是我在获取原始值时遇到问题。
我缺少什么?
答案 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这样的东西并在正则表达式中使用分组。