2012-05-12 3 views
3

私は、特殊な用途のために、小さな/簡単なIRCクライアントを作っています。他のユーザーがMirc /他の同様のクライアントから入力しているMirc色コードを取り除きたいと思います。Mirc色コードのRegex置換

スクリーンショット:私は成功せず、約1時間のためにしようとしている

enter image description here

string msg = string.Format("{0}\n", e.Data.Message); 
//msg = Regex.Replace(msg, @"\x03(?:\d{1,2}(?:,\d{1,2})?)?", string.Empty); // Ive tried all sorts here. 
txtActivity.AppendText(msg); 

は、事前に、感謝を助けてください。

編集:

これは赤色のHelloWorldです。

3 
51 
72 
101 
108 
108 
111 
87 
111 
114 
108 
100 
10 

EDIT 2:

enter image description here

EDIT 3:

3 
48 
49 
44 
49 
53 
32 
49 
46 
32 
73 
110 
32 
116 
104 
101 
32 
78 
97 
109 
101 
32 
111 
102 
32 
31 
65 
108 
108 
97 
104 
31 
44 
32 
116 
104 
101 
32 
77 
111 
115 
116 
32 
66 
101 
110 
101 
102 
105 
99 
101 
110 
116 
44 
32 
116 
104 
101 
32 
77 
111 
115 
116 
32 
31 
77 
101 
114 
99 
105 
102 
117 
108 
31 
46 
32 
3 
10 
+0

ドキュメントを使用することができます。http://www.mirc.com/colors.html – dtb

+0

@dtbはい、私はそれが3を使用する、ことを読んで^ CN [M]という形式のASCIIコードですが、Regexが何をしようとしてもコードを取り除くことはできません。 – sprocket12

+0

文字列L12HelloWorldをchar配列に変換し、各charの内容を16進数または10進数形式でポストすると、私はあなたを助けることができます。 – raisyn

答えて

1

あなたが(逆にして、色、太字、下線)ALL BURCコードを取り除くしたい場合は、することができます次のような正規表現を使用してください:

msg = Regex.Replace(msg, @"[\x02\x1F\x0F\x16]|\x03(\d\d?(,\d\d?)?)?", String.Empty); 
+0

あなたの解決策はほとんどうまくいきました。編集2を見てください。最初の色は消えていますが、端にまだ奇妙な文字が残っています。 – sprocket12

+0

奇妙なことに、あなたは元のようにそれらの文字の16進数/ ASCII値を投稿できますか? – Jarmex

+0

下線(\ x1F)を含むように私のコードを編集しました。オリジナルで忘れてしまったので – Jarmex

0

世界のサンプル

s = new Regex(@"\x03(\d{1,2}(,\d{1,2})?)?").Replace(s, ""); 

は基本的にはちょうどであるLの文字を絞め...あなたの文字列のcharがあり、それらのいずれか 3に一致するように、あなたの正規表現を構築するものに見えるこんにちはあなたのために働く、次のことを試してみてください正規表現の\ X03 51 ...正規表現\ dにおいて

@EDIT 3である数3:
私が投稿コードが得られます。

" 1. In the Name of Allah, the Most Beneficent, the Most Merciful. \n" 

あなたは空白をしたいと改行していない場合は、.Trim()

s = new Regex(@"\x03(\d{1,2}(,\d{1,2})?)?").Replace(s, "").Trim();