首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

为啥同样是去掉空字符,换个方法就不能输出了呢

2012-10-18 
为什么同样是去掉空字符,换个方法就不能输出了呢?原方法是这样的[codeC#]///16进制转换成字符串publicsta

为什么同样是去掉空字符,换个方法就不能输出了呢?
原方法是这样的
[code=C#]  
                ///   16进制转换成字符串  
                public   static   string   HexStringToString(string   hs)
                {
                        //以%分割字符串,并去掉空字符
                        string[]   chars   =   hs.Split(new   char[]   {   '% '   },   StringSplitOptions.RemoveEmptyEntries);
                        byte[]   b   =   new   byte[chars.Length];
                        //逐个字符变为16进制字节数据
                        for   (int   i   =   0;   i   <   chars.Length;   i++)
                        {
                                b[i]   =   Convert.ToByte(chars[i],   16);
                        }
                        //按照指定编码将字节数组变为字符串
                        return   Encoding.GetEncoding( "GB2312 ").GetString(b,   0,   b.Length);

                }[/code]
我把它改成了这样
[code=C#]   public   static   string   HexStringToString(string   hs)
                {
                        //以%分割字符串,并去掉空字符                                
                        hs.Trim();
                        string[]   chars   =   hs.Split(new   char[]   {   '% '   });
                        byte[]   b   =   new   byte[chars.Length];
                        //逐个字符变为16进制字节数据
                        for   (int   i   =1;   i   <   chars.Length;   i++)
                        {
                                b[i]   =   Convert.ToByte(chars[i],   16);
                                MessageBox.Show(chars[i]);
                        }
                        //按照指定编码将字节数组变为字符串
                        return   Encoding.GetEncoding( "GB2312 ").GetString(b,   0,   b.Length);


                }[/code]

两种方法的chars数组内容是一样的,但是在最后一步,第二种方法就不能输出内容.
我之所以这样改,是因为wince下不认StringSplitOptions,我只能用其他方法去代替他.
哪位前辈知道怎样去改写啊?只要绕过StringSplitOptions,能输出正常的GB2312中文就可以.
非常感谢!

[解决办法]
hs = hs.Trim();
另外这个函数只能去掉前后的空字符
[解决办法]
既然不支持,那你就不会自己去掉空字符啊

热点排行