C# 【转贴】中判断字符串是全角还是半角

全角是指用二个字节来表示的一个字符
半角是用一个字节来表示的一个字符
 
这样的话我们就可以用string.length 和System.text.Encoding.Default.GetByteCount来判断
 
其中string.length表示字符串的字符数,
System.text.Encoding.Default.GetByteCount表示字符串的字节数。
 
将全角的变为半角  
  string   s="GBJ1—86";  
  char[]   c=s.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   news=new   string(c);  
 
把字母,数字由半角转化为全角  
  public   string     ChangeStr(   string   str)  
  {   
      char[]   c=str.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;  
  }  
 
判断的方法一:  
代码测试报告:只能对单个字符进行判断,如果出现"23"    判断结果是半角,忽略了后面的全角,如果需要判断就要遍历证字符串
  string   s   =   null;  
   
  s   =   "A";  
  MessageBox.Show(((s[0]   >   255)   ?   "全角"   :   "半角")   +   "   ASCII   of   "   +   Convert.ToInt32(s[0]).ToString("x").ToUpper());  
   
  s   =   "A";  
  MessageBox.Show(((s[0]   >   255)   ?   "全角"   :   "半角")   +   "   ASCII   of   "   +   Convert.ToInt32(s[0]).ToString("x").ToUpper());  
   
  //中文的Unicode大概是从4E00   到   9FA0,所以上例一个是0x41   一个是0xFF21
 
判断的方法二:
代码测试报告:只能对单个字符进行判断,如果出现"23"    判断结果是半角,忽略了后面的全角,如果需要判断就要遍历证字符串
if (checkString.Length == Encoding.Default.GetByteCount(checkString))
   {
    return true;
   }
   else
   {
    return false;
   }
 
全角如下:
if (2 * checkString.Length ==  Encoding.Default.GetByteCount(checkString))
   {
    return true;
   }
   else
   {
    return false;
   }

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值