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有汉字"); 

你可能感兴趣的:(java)