过滤ANSI颜色代码

             byte [] buffer = new   byte [Client.ReceiveBufferSize];
            
this .isActive  =   true ;
            
while  (Client.GetStream().Read(buffer, 0 ,buffer.Length)  !=   0 )
            {
                string Data
= System.Text.Encoding.Default.GetString(buffer);
                
int  i = 0 ;   // 0为有效,1为1b后面的字符,2为无效
                string Data2 = "" ;
直接获取缓冲转换成string 会获得一些意外的惊喜
[2;37;0m
这就是ansi的颜色代码,

"["的ascii分别为 16进制1B、10进制27  和16进制5b、10进制91

原来的想法是遍历每个字符,过滤掉ansi

//                 foreach(char c in Data.ToCharArray())
//                 {
//                     if(c==(char)27)    //  1Bh 27o ''
//                     {
//                         i=1;
//                         continue;
//                     }
//                     if(i==1&&c==(char)91)     // 5bh 91o ''
//                     {
//                         i=2;
//                         continue;
//                     }
//                     if(i==2)
//                         if(c==(char)109)         // 36h 109o 'm'
//                         {
//                             i=0;
//                             continue;
//                         }
//                         else 
//                             continue;
//                     Data2=Data2+c;
//                 }

可是效率低得受不了,于是想到Regex.Replace()

    Data2 = Regex.Replace(Data,@"\[[\d]{1,2}(;[\d]{1,2}){0,2}m","");

 果然不一般。

最近还得研究研究Trigger,用Regex应该很容易,不过Zmud用的不是标准Regex,还要写个好算法转换

Just so so

转载于:https://www.cnblogs.com/pblee/archive/2005/12/15/297827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值