2009-09-08 62 views
11

我正在使用C#編寫一個簡單的irc bot,我無法弄清楚如何將粗體/顏色等典型的mirc控制代碼嵌入到字符串文字中。將mIRC顏色代碼嵌入到C#文字中?

有人可以指點我如何做到這一點?

+1

做什麼?什麼是mIRC顏色代碼?你想做什麼? – 2009-09-08 02:06:14

+2

mirc顏色代碼只是插入字符串中的一個特殊字符,大多數irc客戶端解析並恰當地進行顏色編碼。 – FlySwat 2009-09-08 02:08:08

回答

19

mIRC顏色代碼格式描述爲here。我想你問的是如何在一個字符串中嵌入一個^C

這就是所謂的Caret notation。據C0 and C1 control codes^C是:

'\x03' 

字符串中的嵌入式:

"blabla \x035,12to be colored text and background\x03 blabla" 
+0

或者你甚至可以寫''♥5,12被着色♥'',編譯器不應該窒息這個。 – 2009-09-08 02:15:01

+0

@Anton:沒關係,重讀答案。我迷惑他們。 – 2009-09-08 02:19:24

+3

這不是ANSI顏色代碼。 ANSI顏色代碼是:「\ x1B [32,42m」等 – 2009-09-08 02:20:07

8

在我的Python IRC殭屍,我可以大膽的使用IRSSI露面\ x02sometext \ X02,這表明像:

this is \x02some text\x02 

這是一些文字

至於顏色,我相信你正在尋找\ x03AA,BB,其中A是前景色,B是背景色(你在Ctrl + K之後輸入的內容)。雖然不是100%。嘗試使用telnet連接IRC客戶端,並檢查使用Ctrl + K時mIRC的功能。

您不可能在IRC客戶端之間獲得標準的內聚行爲...... ANSI轉義代碼由更多舊式主要Unix客戶端(如irssi)處理,並且mIRC有時會自行完成。

+0

+1提到ANSI轉義碼! – 2009-09-08 02:16:09

+2

mIRC擁有自己的顏色代碼(用\ x03表示),我相信至少在目前的至少一個GUI客戶端中得到了很好的支持。我可能會選擇這條路線作爲IRC客戶端。另外,我懷疑irssi和類似的命令行客戶端解析ANSI代碼,他們只是將它們解析到控制檯,讓它擔心它們。 – 2009-09-08 02:22:58

+1

mIRC顏色是相當標準的,雖然有些客戶可能有自己的調色板,但大多數客戶應該使用相同的調色板,即使不完全相同。所有客戶端都不支持ANSI轉義碼,我唯一知道的是Irssi和(令人驚訝的)HexChat。 – nyuszika7h 2014-02-16 12:30:23

11

我創建一個枚舉並指定十六進制值的控制代碼給他們。

enum ColorCode { 
    White   = 0, /**< White */ 
    Black   = 1, /**< Black */ 
    DarkBlue  = 2, /**< Dark blue */ 
    DarkGreen  = 3, /**< Dark green */ 
    Red   = 4, /**< Red */ 
    DarkRed   = 5, /**< Dark red */ 
    DarkViolet  = 6, /**< Dark violet */ 
    Orange   = 7, /**< Orange */ 
    Yellow   = 8, /**< Yellow */ 
    LightGreen  = 9, /**< Light green */ 
    Cyan   = 10, /**< Cornflower blue */ 
    LightCyan  = 11, /**< Light blue */ 
    Blue   = 12, /**< Blue */ 
    Violet   = 13, /**< Violet */ 
    DarkGray   = 14, /**< Dark gray */ 
    LightGray  = 15 /**< Light gray */ 
}; 

enum ControlCode { 
    Bold   = 0x02,  /**< Bold */ 
    Color   = 0x03,  /**< Color */ 
    Italic   = 0x09,  /**< Italic */ 
    StrikeThrough   = 0x13,  /**< Strike-Through */ 
    Reset   = 0x0f,  /**< Reset */ 
    Underline  = 0x15,  /**< Underline */ 
    Underline2  = 0x1f,  /**< Underline */ 
    Reverse   = 0x16  /**< Reverse */ 
}; 
+2

非常感謝枚舉 – MOnsDaR 2013-04-14 14:04:47

0

這可能是到我使用(ChatSharp)特定聊天庫,但我不能讓當前接受的答案工作。我最後得到的是:

channel.SendMessage((char)3 + "5,12hello");