2009-09-08 14 views
11

मैं सी # में एक साधारण आईआरसी बॉट पर काम कर रहा हूं, और मैं स्ट्रिंग अक्षर में बोल्ड/रंग इत्यादि के लिए विशिष्ट मिर्क नियंत्रण कोड को एम्बेड करने का तरीका नहीं समझ सकता।एक सी # शाब्दिक में एमआईआरसी रंग कोड एम्बेड करें?

क्या कोई मुझे इस बारे में बता सकता है कि यह कैसे करें?

+1

क्या करें? एक एमआईआरसी रंग कोड क्या है? तुम क्या करने की कोशिश कर रहे हो? –

+2

एक मिर्क रंग कोड केवल एक स्ट्रिंग में डालने वाला एक विशेष वर्ण है जो अधिकांश आईआरसी क्लाइंट पार्स और फिर रंगीन कोड उचित रूप से पाता है। एएनएसआई एस्केप कोड का उल्लेख करने के लिए – FlySwat

उत्तर

19

एमआईआरसी रंग कोड प्रारूप का वर्णन here है। मुझे लगता है कि आप एक स्ट्रिंग में ^सी को एम्बेड करने के तरीके से पूछ रहे हैं।

इसे Caret notation के रूप में जाना जाता है। C0 and C1 control codes के अनुसार, ^सी है:

'\x03' 

एक स्ट्रिंग में एंबेडेड:

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

या आप "♥ 5,12 रंगीन ♥" होने के लिए भी लिख सकते हैं, संकलक इस पर चकित नहीं होना चाहिए। –

+0

@ एंटन: कभी भी ध्यान न दें, जवाब दोबारा पढ़ें। मैं उन्हें भ्रमित करता हूं। –

+3

यह एएनएसआई रंग कोड नहीं है। एएनएसआई रंग कोड हैं: "\ x1 बी [32,42 मीटर" आदि –

8

मेरी अजगर आईआरसी बॉट में, मैं का उपयोग कर irssi में दिखाने के लिए बोल्ड प्राप्त कर सकते हैं \ x02sometext \ X02 है, जो की तरह दिखाई देता है:

this is \x02some text\x02 

इस कुछ पाठ

रंग के लिए के रूप में है , मेरा मानना ​​है कि आप \ x03AA, बीबी की तलाश में हैं, जहां ए अग्रभूमि रंग है और बी पृष्ठभूमि रंग (जिसे आप Ctrl + K के बाद टाइप करेंगे)। हालांकि, निश्चित रूप से 100% नहीं है। टेलनेट का उपयोग करके आईआरसी क्लाइंट को जोड़ने का प्रयास करें, और जब आप Ctrl + K का उपयोग करते हैं तो एमआईआरसी क्या करता है इसकी जांच करें।

आपको आईआरसी ग्राहकों में मानक एकजुट व्यवहार प्राप्त करने की संभावना नहीं है ... एएनएसआई एस्केप कोड पुराने पुराने किराया प्रधान यूनिक्स जैसे यूनिक्स ग्राहकों द्वारा संसाधित होते हैं, और एमआईआरसी कभी-कभी अपनी खुद की चीज करता है।

+0

+1! –

+2

एमआईआरसी के पास अपने स्वयं के रंग कोड हैं (\ x03 द्वारा दर्शाए गए), और मेरा मानना ​​है कि इन दिनों कम से कम जीयूआई ग्राहकों में यह अच्छी तरह से समर्थित है। मैं शायद इस मार्ग को आईआरसी क्लाइंट के लिए ले जाऊंगा। साथ ही, मुझे संदेह है कि आईआरएसएसआई और इसी तरह के कमांडलाइन क्लाइंट एएनएसआई कोड को पार्स करते हैं, वे सिर्फ उन्हें कंसोल के माध्यम से पार्स करते हैं और इसे उनके बारे में चिंता करते हैं। –

+1

एमआईआरसी रंग बहुत मानक हैं, और कुछ ग्राहकों के पास अपने स्वयं के पैलेट हो सकते हैं, अधिकांश क्लाइंटों को एक ही पैलेट का उपयोग करना चाहिए, भले ही बिल्कुल वही नहीं। एएनएसआई एस्केप कोड सभी क्लाइंट्स द्वारा समर्थित नहीं हैं, केवल मुझे पता है कि इरस्सी और (आश्चर्यजनक रूप से) हेक्सचैट हैं। – nyuszika7h

11

मैं एक enum बना सकते हैं और उन्हें नियंत्रण कोड स मान असाइन करें।

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

0

इस विशिष्ट चैट पुस्तकालय मैं (ChatSharp) का उपयोग किया गया था करने के लिए नीचे हो सकता है, लेकिन मैं वर्तमान स्वीकृत जवाब काम करने के लिए नहीं मिल सका। मैं किसके साथ समाप्त हुआ था:

channel.SendMessage((char)3 + "5,12hello"); 
संबंधित मुद्दे