JAVA:全角和半角的区分判断

Share

在平常大多数的国内软件开发过程中,也许我们并没有注意半角和全角的输入法对用户体验产生的效果(或许还会造成数据的紊乱),但是如果做过外包的都知道,国外在这一方面都要求的比较严,特别是日本。所以为了提高程序的用户使用效果,我们还是要对用户Input进行check。

全角和半角的区别:
全角是指中文输入法状态条中的“半月”变成“满月”的时候,此时输入的英文字符会占用两个字节,通俗地说,就是所输入的英文字符看起来和中文字一样宽。
比如:
全角状态下:ABCDEFGHIJKLMNOPQRSTUVWXYZ
半角状态下:ABCDEFGHIJKLMNOPQRSTUVWXYZ

另外,标点符号也分中文态和英文态两种,要注意它们之间的切换。比如:
中文态下:,。;“”《》……
英文态下:,.;””<>………

一个java的判断方法的DEMO

/**
 * @author    李国庆
 * @company   leemenz (C) copyright
 * @time      Sep 29, 2007  16:16:24 PM
 * @version   1.0.0.0
 * @package   com.icnote.check
 */
public class HanZiCheck 
{

  public void check(String str) {
    int length = str.length();
    int bytLength = str.getBytes().length;        

    //都是半角的情况
    if(bytLength == length) {
      System.out.println("都是半角");      
      }
    
    //都是全角的情况
    else if(bytLength == 2 * length) {
      System.out.println("都是全角");    
       }        

    //有全角有半角
    else {    
      System.out.println("有全角有半角");      
      }
    }
       

  public static void main(String[] args) 
  {
    HanZiCheck hzc=new HanZiCheck();        

    hzc.check("ABCDEFGHIJKLMNOPQRSTUVWXYZ");                      //全角
   hzc.check("ABCDEFGHIJKLMNOPQRSTUVWXYZ");                                     //半角     

        

    hzc.check(",.;<>.........");           //半角                                        
    hzc.check(",。;“”《》……");          //全角
        

    hzc.check("ABCD ABCDEF");           //全角半角混合
    hzc.check(",.《》……");                //全角半角混合
        
    hzc.check("我是全角字");              //全角汉字
    hzc.check("我是半角字");              //半角汉字

  }
}