一切皆可抽象

大而无形 庖丁解牛 厚积薄发 涤虑玄览
   ::  ::  ::  ::  :: 管理

1)用unicode码判断

 对于gb2312来讲,首字节码位从0×81至0×FE,尾字节码位分别是0×40至0×FE  
 
public  boolean  isGB2312(String  str){  
                           char[]  chars=str.toCharArray();  
                           boolean  isGB2312=false;  
                           for(int  i=0;i<chars.length;i++){  
                                       byte[]  bytes=(""+chars[i]).getBytes();  
                                       if(bytes.length==2){  
                                                   int[]  ints=new  int[2];  
                                                   ints[0]=bytes[0]&  0xff;  
                                                   ints[1]=bytes[1]&  0xff;  
                                                   if(ints[0]>=0x81  &&  ints[0]<=0xFE  &&  ints[1]>=0x40  &&  ints[1]<=0xFE){  
                                                               isGB2312=true;  
                                                               break;  
                                                   }  
                                       }  
                           }  
                           return  isGB2312;  

 

2)用正则表达式

  1. String  aa = "中国China人";
  2. for  (int i = 0; i < aa.length(); i++) {
  3.    String bb = aa.substring(i, i+1);
  4.    //生成一个Pattern,同时编译一个正则表达式 
  5.    boolean cc = java.util.regex.Pattern.matches("[\u4E00-\u9FA5]", bb);
  6.    System.out.println(bb+" is chinese?-> "+cc);
  7. }

第2中方法更简单些

如果是判断是否为全角字符可以用

boolean cc = java.util.regex.Pattern.matches("[\uFF00-\uFFFF]", bb);


只有注册用户登录后才能发表评论。


网站导航: