2009-10-22 4 views
0

나는 다음과 같은 코드를 가지고 :정규식은 교체하고 교체 문자열

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); 

을 그리고?

또한 함께 시도한 다음 FindDefinition 방법으로 잘 작동

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

,하지만 나는이 문제를 원래 값을 받고 있습니다.

내가 누락 된 부분이 있습니까?

답변

0

이 시도 :

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

물론 이죠. 이전에 이것을 테스트했을 때 나는 틀린 일을해야했을 것입니다. 감사 :). –

0

당신은 손으로 XML을 구축하고, 그것은 거의 항상 명백히 잘못이다.

평가판 (replaceword)을 사용해야합니다. 당신은 같은 것을하지 않는 이유 :

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

을 나는 m.Groups [0] .Value 같은 것을 사용하고 정규식에서 그룹화 사용하는 경향이 것입니다.