如何运用java来校验一段字符串是否为汉字

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

第2中方法更简单些

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值