java判断是否为汉字 和 是否有汉字

"java判断是否为汉字 和 是否有汉字":
关键词java 判断 是否  汉字 是否  汉字

java判断是否为汉字 和 是否有汉字
2010-06-30 11:51

本文章为转载他人文章

java代码

  1. publicboolean vd(string str){   
  2.      
  3.     char[] chars=str.tochararray();   
  4.     boolean isgb2312=false;   
  5.     for(int i=0;i<chars.length;i++){   
  6.                 byte[] bytes=(""+chars[i]).getbytes();   
  7.                 if(bytes.length==2){   
  8.                             int[] ints=newint[2];   
  9.                              ints[0]=bytes[0]& 0xff;   
  10.                              ints[1]=bytes[1]& 0xff;   
  11.                             if(ints[0]>=0x81 && ints[0]<=0xfe && ints[1]>=0x40 && ints[1]<=0xfe){   
  12.                                          isgb2312=true;   
  13.                                         break;   
  14.                              }   
  15.                  }   
  16.      }   
  17.     return isgb2312;   
  18. }  

首先要import java.util.regex.pattern 和 java.util.regex.matcher 
这两个包,接下来是代码 

判断是否为数字

java代码

  1. publicboolean isnumeric(string str)   
  2. {   
  3.         pattern pattern = pattern.compile(”[0-9]*”);   
  4.         matcher isnum = pattern.matcher(str);   
  5.        if( !isnum.matches() ) {   
  6.           returnfalse;   
  7.         }   
  8.        returntrue;   
  9. }   
  10.   
  11. java.lang.character.isdigit(ch[0])
java代码
  1. publicstaticvoid main(string[] args) {       
  2.         int count = 0;       
  3.           string regex = "[\\u4e00-\\u9fa5]";       
  4.         //system.out.println(regex);       
  5.           string str = "中文fdas ";       
  6.         //system.out.println(str);       
  7.           pattern p = pattern.compile(regex);       
  8.           matcher m = p.matcher(str);       
  9.         while (m.find()) {       
  10.             for (int i = 0; i <= m.groupcount(); i++) {       
  11.                   count = count + 1;       
  12.               }       
  13.           }       
  14.           system.out.println("共有 " + count + "个 ");       
  15.       }     

------------------------------------------------------------------- 

判断java string中是否有汉字的方法 

java用的是unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了,实际中,我们希望判断一个字符是不是汉字,或者一个字符串里的字符是否有汉字来满足业务上的需 求,string类中有个这样的方法可得到其字符长度length() ,看下面例子,

java代码
  1. string s1 = "我是中国人";   
  2. string s2 = "imchinese";   
  3. string s3 = "im中国人";   
  4. system.out.println(s1+":"+new string(s1).length());   
  5. system.out.println(s2+":"+new string(s2).length());   
  6. system.out.println(s3+":"+new string(s3).length());  



output: 
我是中国人:5 
imchinese:9 
im中国人:5 
看到了吧,字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码 
于是按照以上的规律,结合一位qq昵称 ?g茶?i珠海 兄的提示由以下解决方法,就是判断字符串的长度和字符字节的长度是否相同来判断是否有双字节的字符

java代码
  1. system.out.println((s1.getbytes().length == s1.length())?"s1无汉字":"s1有汉字");   
  2. system.out.println((s2.getbytes().length == s2.length())?"s2无汉字":"s2有汉字");   
  3. system.out.println((s3.getbytes().length == s3.length())?"s3无汉字":"s3有汉字");  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值