String.getBytes().length != String.length()
String.getBytes().length取的是字节数,因为中文是全角字符,所以每个中文的字节数都为2
String.length()取的是字符长度,按中文的个数来截取。
但是这样有bug 因为中文是全角字符没错,但是并非全角字符就全部是中文
另外的解决方法如下:
String str = "中国chinese";
for(int i =0 ;i < str.length() ; i ++)
{
System.out.println(str.substring(i, i+1).matches("[\\u4e00-\\u9fa5]+"));
}
这是取的中文在Unicode中的编码区间,而且将字符中的每一个substring都拿出来与字符区间相比
最终很容易判断出字符中是否有中文。