2014-01-18 3 views
2

orderedDictionaryRegex에 문제가 있습니다. 나는 텍스트로 문제를 정의 할 수 있습니다하지만 난OrderedDictionary 및 Regex

... 설명하려고합니다 어떻게이 내 코드입니다 : 내가 >:(을 처리하기 위해 노력

var smilies = new OrderedDictionary 
{ 
    {@":(", "smile_sadx24"}, 
    {@">:(", "smile_angryx24"}, 
}; 

foreach (string smiley in smilies.Keys) 
{ 
    var re = new Regex(@"(?<!(=""))" + Regex.Escape(smiley) + @"(?<!(""))"); 
    if (re.IsMatch(incomingtext)) 
    { 
     string m2 = re.Replace(incomingtext, "<img src=\"/Content/themes/mavi/img/custom/smiles/" + smilies[smiley] + ".png\" alt=\"" + smiley + "\"/>"); 
     incomingtext = m2; 
    } 
} 

다음은하지 smile_angryx24smile_sadx24을 돌려 .. .

가 먼저 :(를 잡을 수 있기 때문에 ...

는이 문제를 어떻게 해결할 수 있습니까?

+0

아마 사전에 분노를 퍼뜨려보십시오. – Jerry

+0

이미 시도했습니다. 효과 없음 :/ –

답변

1

두 가지 :

var smilies = new OrderedDictionary 
{ 
    {@">:(", "smile_angryx24"}, // Put this one first 
    {@":(", "smile_sadx24"}, 
}; 

foreach (string smiley in smilies.Keys) 
{ 
    var re = new Regex(@"(?<!(=""))" + Regex.Escape(smiley) + @"(?!(""))"); 
         // Second should be a negative lookahead ^^ 
    if (re.IsMatch(incomingtext)) 
    { 
     string m2 = re.Replace(incomingtext, "<img src=\"/Content/themes/mavi/img/custom/smiles/" + smilies[smiley] + ".png\" alt=\"" + smiley + "\"/>"); 
     incomingtext = m2; 
    } 
} 
룩어 당신이 분노와 슬픈 스마일 교환 할 때 정규식 실패의 원인이 무엇인가가있을했는데 부정적인 모습 뒤에 를 사용

ideone demo

, 스마일 문자가 "을 전혀 사용하지 않기 때문입니다.

+1

완료! 고마워. http://i.imgur.com/coMKpKh.png –