[转]c#字符全半角转换

内容来自网络

从上面的ASCII码字母表中,可以看到英文字符(半角)的ASCII值处在32到126之间,在进行全角半角转换时,也就是转换这些字符。对于大多数英文字符,将其ASCII值加上65248就变成中文字符了,但是有两个例外:

  半角空格" ",其ASCII值为32,全角空格" ",其ASCII值为12288

  英文句号".",其ASCII值为46,全角句号"。",其ASCII值为12290

  知道这两点,就好转换了

 

///   <summary>  
                  ///   半角转全角  
                  ///   </summary>  
                  ///   <param   name="BJstr"></param>  
                  ///   <returns></returns>  
                  static   public   string   GetQuanJiao(string   BJstr)  
                  {  
                          #region  
                          char[]   c   =   BJstr.ToCharArray();  
                          for   (int   i   =   0;   i   <   c.Length;   i++)  
                          {  
                                  byte[]   b   =   System.Text.Encoding.Unicode.GetBytes(c,   i,   1);  
                                  if   (b.Length   ==   2)  
                                  {  
                                          if   (b[1]   ==   0)  
                                          {  
                                                  b[0]   =   (byte)(b[0]   -   32);  
                                                  b[1]   =   255;  
                                                  c[i]   =   System.Text.Encoding.Unicode.GetChars(b)[0];  
                                          }  
                                  }  
                          }  
   
                          string   strNew   =   new   string(c);  
                          return   strNew;  
   
                          #endregion  
                  }  
   
                  ///   <summary>  
                  ///   全角转半角  
                  ///   </summary>  
                  ///   <param   name="QJstr"></param>  
                  ///   <returns></returns>  
                  static   public   string   GetBanJiao(string   QJstr)  
                  {  
                          #region  
                          char[]   c   =   QJstr.ToCharArray();  
                          for   (int   i   =   0;   i   <   c.Length;   i++)  
                          {  
                                  byte[]   b   =   System.Text.Encoding.Unicode.GetBytes(c,   i,   1);  
                                  if   (b.Length   ==   2)  
                                  {  
                                          if   (b[1]   ==   255)  
                                          {  
                                                  b[0]   =   (byte)(b[0]   +   32);  
                                                  b[1]   =   0;  
                                                  c[i]   =   System.Text.Encoding.Unicode.GetChars(b)[0];  
                                          }  
                                  }  
                          }  
                          string   strNew   =   new   string(c);  
                          return   strNew;  
                          #endregion  
                  }

转载于:https://www.cnblogs.com/xinyuxin912/archive/2009/10/26/1589956.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>