2014-01-18 17 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_sadx24smile_angryx24 .. 。

因爲它趕上:(首先...

我怎樣才能解決這個問題?

+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 –