//判断字符串是否含有中文字符的三种方法,正则表达式不能判断标点符号 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { System.out.println(checkGBK("。")); isChinese("。"); System.out.println(hasChinese("。")); } // 方式一 public static void isChinese(String str) { if (str.length() < str.getBytes().length) { System.out.println("有中文"); } else { System.out.println("英文"); } } // 方式二 public static boolean checkGBK(String str) { String test = "[\\u4E00-\\u9FA5]+"; Pattern p = Pattern.compile(test); Matcher m = p.matcher(str); if (m.find()) { return true; } return false; } // 方式三 public static boolean hasChinese(String strName) { char[] ch = strName.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < ch.length; i++) { char c = ch[i]; if (isChinese(c) == true) { // System.out.print(c); return true; } } return false; } public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; } }