Java 斷定字符為中文實例代碼(超管用)。本站提示廣大學習愛好者:(Java 斷定字符為中文實例代碼(超管用))文章只能為提供參考,不一定能成為您想要的結果。以下是Java 斷定字符為中文實例代碼(超管用)正文
在做項目中常常會碰到有項目需求是須要斷定字符為中文的一些成績,所以匯集了斷定中文字符的代碼片斷,特此分享供年夜家參考。
直接貼出代碼了,外面有具體的正文。
package com.coder4j.main; import java.util.regex.Pattern; /** * Java 斷定中文字符 * * @author Chinaxiang * @date 2015-08-11 * */ public class CheckChinese { public static void main(String[] args) { // 純英文 String s1 = "Hello,Tom.!@#$%^&*()_+-={}|[];':\"?"; // 純中文(不含中文標點) String s2 = "你好中國"; // 純中文(含中文標點) String s3 = "你好,中國。《》:“”‘';()【】!¥、"; // 韓文 String s4 = "한국어난"; // 日文 String s5 = "ぎじゅつ"; // 特別字符 String s6 = "��"; String s7 = "╃"; String s8 = "╂"; // 繁體中文 String s9 = "蒼老師"; // 1 應用字符規模斷定 System.out.println("s1能否包括中文:" + hasChineseByRange(s1));// false System.out.println("s2能否包括中文:" + hasChineseByRange(s2));// true System.out.println("s3能否包括中文:" + hasChineseByRange(s3));// true System.out.println("s4能否包括中文:" + hasChineseByRange(s4));// false System.out.println("s5能否包括中文:" + hasChineseByRange(s5));// false System.out.println("s6能否包括中文:" + hasChineseByRange(s6));// false System.out.println("s7能否包括中文:" + hasChineseByRange(s7));// false System.out.println("s8能否包括中文:" + hasChineseByRange(s8));// false System.out.println("s9能否包括中文:" + hasChineseByRange(s9));// true System.out.println("-------朋分線-------"); System.out.println("s1能否滿是中文:" + isChineseByRange(s1));// false System.out.println("s2能否滿是中文:" + isChineseByRange(s2));// true System.out.println("s3能否滿是中文:" + isChineseByRange(s3));// false 中文標點不在規模內 System.out.println("s4能否滿是中文:" + isChineseByRange(s4));// false System.out.println("s5能否滿是中文:" + isChineseByRange(s5));// false System.out.println("s6能否滿是中文:" + isChineseByRange(s6));// false System.out.println("s7能否滿是中文:" + isChineseByRange(s7));// false System.out.println("s8能否滿是中文:" + isChineseByRange(s8));// false System.out.println("s9能否滿是中文:" + isChineseByRange(s9));// true System.out.println("-------朋分線-------"); // 2 應用字符規模正則斷定(成果同1) System.out.println("s1能否包括中文:" + hasChineseByReg(s1));// false System.out.println("s2能否包括中文:" + hasChineseByReg(s2));// true System.out.println("s3能否包括中文:" + hasChineseByReg(s3));// true System.out.println("s4能否包括中文:" + hasChineseByReg(s4));// false System.out.println("s5能否包括中文:" + hasChineseByReg(s5));// false System.out.println("s6能否包括中文:" + hasChineseByReg(s6));// false System.out.println("s7能否包括中文:" + hasChineseByReg(s7));// false System.out.println("s8能否包括中文:" + hasChineseByReg(s8));// false System.out.println("s9能否包括中文:" + hasChineseByReg(s9));// true System.out.println("-------朋分線-------"); System.out.println("s1能否滿是中文:" + isChineseByReg(s1));// false System.out.println("s2能否滿是中文:" + isChineseByReg(s2));// true System.out.println("s3能否滿是中文:" + isChineseByReg(s3));// false 中文標點不在規模內 System.out.println("s4能否滿是中文:" + isChineseByReg(s4));// false System.out.println("s5能否滿是中文:" + isChineseByReg(s5));// false System.out.println("s6能否滿是中文:" + isChineseByReg(s6));// false System.out.println("s7能否滿是中文:" + isChineseByReg(s7));// false System.out.println("s8能否滿是中文:" + isChineseByReg(s8));// false System.out.println("s9能否滿是中文:" + isChineseByReg(s9));// true System.out.println("-------朋分線-------"); // 3 應用CJK字符集斷定 System.out.println("s1能否包括中文:" + hasChinese(s1));// false System.out.println("s2能否包括中文:" + hasChinese(s2));// true System.out.println("s3能否包括中文:" + hasChinese(s3));// true System.out.println("s4能否包括中文:" + hasChinese(s4));// false System.out.println("s5能否包括中文:" + hasChinese(s5));// false System.out.println("s6能否包括中文:" + hasChinese(s6));// false System.out.println("s7能否包括中文:" + hasChinese(s7));// false System.out.println("s8能否包括中文:" + hasChinese(s8));// false System.out.println("s9能否包括中文:" + hasChinese(s9));// true System.out.println("-------朋分線-------"); System.out.println("s1能否滿是中文:" + isChinese(s1));// false System.out.println("s2能否滿是中文:" + isChinese(s2));// true System.out.println("s3能否滿是中文:" + isChinese(s3));// true 中文標點也被包括出去 System.out.println("s4能否滿是中文:" + isChinese(s4));// false System.out.println("s5能否滿是中文:" + isChinese(s5));// false System.out.println("s6能否滿是中文:" + isChinese(s6));// false System.out.println("s7能否滿是中文:" + isChinese(s7));// false System.out.println("s8能否滿是中文:" + isChinese(s8));// false System.out.println("s9能否滿是中文:" + isChinese(s9));// true } /** * 能否包括中文字符<br> * 包括中文標點符號<br> * * @param str * @return */ public static boolean hasChinese(String str) { if (str == null) { return false; } char[] ch = str.toCharArray(); for (char c : ch) { if (isChinese(c)) { return true; } } return false; } /** * 能否滿是中文字符<br> * 包括中文標點符號<br> * * @param str * @return */ public static boolean isChinese(String str) { if (str == null) { return false; } char[] ch = str.toCharArray(); for (char c : ch) { if (!isChinese(c)) { return false; } } return true; } /** * 能否是中文字符<br> * 包括中文標點符號<br> * * @param c * @return */ private static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS) { return true; } else if (ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS) { return true; } else if (ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION) { return true; } else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A) { return true; } else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B) { return true; } else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C) { return true; } else if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) { return true; } else if (ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) { return true; } else if (ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; } /** * 能否包括漢字<br> * 依據漢字編碼規模停止斷定<br> * CJK同一漢字(不包括中文的,。《》()“‘'”、!¥等符號)<br> * * @param str * @return */ public static boolean hasChineseByReg(String str) { if (str == null) { return false; } Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+"); return pattern.matcher(str).find(); } /** * 能否滿是漢字<br> * 依據漢字編碼規模停止斷定<br> * CJK同一漢字(不包括中文的,。《》()“‘'”、!¥等符號)<br> * * @param str * @return */ public static boolean isChineseByReg(String str) { if (str == null) { return false; } Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+"); return pattern.matcher(str).matches(); } /** * 能否包括漢字<br> * 依據漢字編碼規模停止斷定<br> * CJK同一漢字(不包括中文的,。《》()“‘'”、!¥等符號)<br> * * @param str * @return */ public static boolean hasChineseByRange(String str) { if (str == null) { return false; } char[] ch = str.toCharArray(); for (char c : ch) { if (c >= 0x4E00 && c <= 0x9FBF) { return true; } } return false; } /** * 能否滿是漢字<br> * 依據漢字編碼規模停止斷定<br> * CJK同一漢字(不包括中文的,。《》()“‘'”、!¥等符號)<br> * * @param str * @return */ public static boolean isChineseByRange(String str) { if (str == null) { return false; } char[] ch = str.toCharArray(); for (char c : ch) { if (c < 0x4E00 || c > 0x9FBF) { return false; } } return true; } }
假如僅僅去斷定能否是中文,不需斷定中文標點的話,推舉應用正則去婚配,能夠更高效點。
以上代碼內容給年夜家引見了Java 斷定字符為中文實例代碼(超管用),願望對年夜家有所贊助。