开发者

RegEx Replace and replacement string

开发者 https://www.devze.com 2022-12-08 23:07 出处:网络
I\'ve got the following code: Regex.Replace(text, words.ToString(), \"<dfn title=\\\"\" + this.FindDefinition(\"$0\")+ \"\\\">$0</dfn>\", RegexOptions.IgnoreCase | RegexOptions.Compiled);

I've got the following code:

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

The problem I'm having is with the FindDefinition method. I would like to send in the originale word to make a lookup and return the definition text. Is this possible or do I need to create a template like this:

Regex.Replace(text, words.ToString(), "<dfn title=\"{$0}\">$0</dfn>", Regex开发者_如何学JAVAOptions.IgnoreCase | RegexOptions.Compiled);

And then do a search for it to replace it with my definition?

I've also tried with:

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>";
}

Which works fine with the FindDefinition method, but then I have a problem getting the original value.

Anything I'm missing?


Try this:

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


You're building XML by hand, it's almost always plain wrong.

You'll need to use the evaluator (replaceword). Why don't you do something like:

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

I'd tend to use something like m.Groups[0].Value and use grouping in regex.

0

精彩评论

暂无评论...
验证码 换一张
取 消