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都拿出來與字符區間相比
最終很容易判斷出字符中是否有中文。