2010-04-11 64 views
0

我有例如像一個字符串「:)文本:)文本:) :-)字:-(」我需要追加它在文本框(或其他地方),用條件:C#字符串分析

相反':)',':-('等需要調用進入特定符號的函數

我用有限狀態機存在解決方案,但是如何實現它不知道。等待建議。

更新:「:)text:)text :) :-) word :-(」=>當我們見面':)'wec所有函數Smile(「:)」)和它在文本框上顯示圖像

更新:我喜歡代表和Regex.Replace的想法。我可以當滿足「:)」發送到委託參數「:)」,當滿足「:(」等參數

更新:與轉換爲char和每一個符號比較找到解決方案「:)」如果等於呼叫微笑(':)')

+0

你想要在字符串中調用例如「:)」的例子的Smiley()方法嗎?像這樣:'textString.Replace(「:)」,Smiley());'? – Cipi 2010-04-11 14:36:17

+3

是否String.Replace不符合法案? – 2010-04-11 14:37:18

回答

8

您可以使用Regex.Replace與委託,您可以在其中處理匹配的輸入,或者您可以簡單地使用string.Replace方法。

更新

你可以做這樣的事情:執行後

 string text = "aaa :) bbb :(ccc"; 

     string replaced = Regex.Replace(text, @":\)|:\(", match => match.Value == ":)" ? "case1" : "case2"); 

replaced變量將有 「AAA案例1 BBB案例2 CCC」 值。

+0

+1我很喜歡這個答案! – used2could 2010-04-11 14:39:01

0

您可以創建一個包含這些特定字符的字典作爲關鍵字並提取該值。

1

看來你想用這些符號替換部分字符串,對吧?無需自己構建,只需使用string.Replace即可。事情是這樣的:

string text = " :)text :)text:) :-) word :-("; 
text = text.Replace(":)", "☺").Replace(":(", "☹"); // similar for others 
textbox.Text += text; 

請注意,這是不是有史以來最高效的代碼,但如果這是類似一個聊天程序,你可能永遠不會知道其中的差別。