java判断字符串中是否含有中文字符

时间:2021-09-17 07:43:54
java用的是Unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了,实际中,我们希望判断一个字符是不是汉字,或者一个字符串里的字符是否有汉字来满足业务上的需求,String类中有个这样的方法可得到其字符长度length() ,看下面例子,
Java代码
String s1 = "我是中国人";  
String s2 = "imchinese";  
String s3 = "im中国人";  
System.out.println(s1+":"+new String(s1).length());  
System.out.println(s2+":"+new String(s2).length());   
System.out.println(s3+":"+new String(s3).length()); 

OUTPUT:
我是中国人:5
imchinese:9
im中国人:5
看到了吧,字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码
于是按照以上的规律,由以下解决方法,就是判断字符串的长度和字符字节的长度是否相同来判断是否有双字节的字符
Java代码
System.out.println((s1.getBytes().length == s1.length())?"s1无汉字":"s1有汉字");  
System.out.println((s2.getBytes().length == s2.length())?"s2无汉字":"s2有汉字");  
System.out.println((s3.getBytes().length == s3.length())?"s3无汉字":"s3有汉字");