国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java 完美判斷中文字符

2019-11-11 06:45:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

java判斷一個(gè)字符串是否有中文一般情況是利用Unicode編碼(CJK統(tǒng)一漢字的編碼區(qū)間:0x4e00–0x9fbb)的正則來(lái)做判斷,但是其實(shí)這個(gè)區(qū)間來(lái)判斷中文不是非常精確,因?yàn)橛行┲形牡臉?biāo)點(diǎn)符號(hào)比如:,。等等是不能識(shí)別的。

以下是比較完善的判斷方法:CharUtil.java

package com.micmiu.utils;import java.util.regex.Pattern;/** * 字符通用工具類 *  * @author <a href="http://www.micmiu.com">Michael Sun</a> */public class CharUtil {	/**	 * @param args	 */	public static void main(String[] args) {		String[] strArr = new String[] { "www.micmiu.com",				"!@#$%^&*()_+{}[]|/"'?/:;<>,.", "!¥……()——:;“”‘’《》,。?、", "不要啊",				"やめて", "韓佳人", "???" };		for (String str : strArr) {			System.out.PRintln("===========> 測(cè)試字符串:" + str);			System.out.println("正則判斷:" + isChineseByREG(str) + " -- "					+ isChineseByName(str));			System.out.println("Unicode判斷結(jié)果 :" + isChinese(str));			System.out.println("詳細(xì)判斷列表:");			char[] ch = str.toCharArray();			for (int i = 0; i < ch.length; i++) {				char c = ch[i];				System.out.println(c + " --> " + (isChinese(c) ? "是" : "否"));			}		}	}	// 根據(jù)Unicode編碼完美的判斷中文漢字和符號(hào)	private 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.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B				|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION				|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS				|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {			return true;		}		return false;	}	// 完整的判斷中文漢字和符號(hào)	public static boolean isChinese(String strName) {		char[] ch = strName.toCharArray();		for (int i = 0; i < ch.length; i++) {			char c = ch[i];			if (isChinese(c)) {				return true;			}		}		return false;	}	// 只能判斷部分CJK字符(CJK統(tǒng)一漢字)	public static boolean isChineseByREG(String str) {		if (str == null) {			return false;		}		Pattern pattern = Pattern.compile("[//u4E00-//u9FBF]+");		return pattern.matcher(str.trim()).find();	}	// 只能判斷部分CJK字符(CJK統(tǒng)一漢字)	public static boolean isChineseByName(String str) {		if (str == null) {			return false;		}		// 大小寫不同://p 表示包含,//P 表示不包含 		// //p{Cn} 的意思為 Unicode 中未被定義字符的編碼,//P{Cn} 就表示 Unicode中已經(jīng)被定義字符的編碼		String reg = "//p{InCJK Unified Ideographs}&&//P{Cn}";		Pattern pattern = Pattern.compile(reg);		return pattern.matcher(str.trim()).find();	}}

運(yùn)行結(jié)果如下:

===========&gt; 測(cè)試字符串:www.micmiu.com正則判斷:false -- falseUnicode判斷結(jié)果 :false詳細(xì)判斷列表:w --&gt; 否w --&gt; 否w --&gt; 否. --&gt; 否m --&gt; 否i --&gt; 否c --&gt; 否m --&gt; 否i --&gt; 否u --&gt; 否. --&gt; 否c --&gt; 否o --&gt; 否m --&gt; 否===========&gt; 測(cè)試字符串:!@#$%^&amp;*()_+{}[]|"'?/:;&lt;&gt;,.正則判斷:false -- falseUnicode判斷結(jié)果 :false詳細(xì)判斷列表:! --&gt; 否@ --&gt; 否# --&gt; 否$ --&gt; 否% --&gt; 否^ --&gt; 否&amp; --&gt; 否* --&gt; 否( --&gt; 否) --&gt; 否_ --&gt; 否+ --&gt; 否{ --&gt; 否} --&gt; 否[ --&gt; 否] --&gt; 否| --&gt; 否" --&gt; 否' --&gt; 否? --&gt; 否/ --&gt; 否: --&gt; 否; --&gt; 否&lt; --&gt; 否&gt; --&gt; 否, --&gt; 否. --&gt; 否===========&gt; 測(cè)試字符串:!¥……()——:;“”‘’《》,。?、正則判斷:false -- falseUnicode判斷結(jié)果 :true詳細(xì)判斷列表:! --&gt; 是¥ --&gt; 是… --&gt; 是… --&gt; 是( --&gt; 是) --&gt; 是— --&gt; 是— --&gt; 是: --&gt; 是; --&gt; 是“ --&gt; 是” --&gt; 是‘ --&gt; 是’ --&gt; 是《 --&gt; 是》 --&gt; 是, --&gt; 是。 --&gt; 是? --&gt; 是、 --&gt; 是===========&gt; 測(cè)試字符串:不要啊正則判斷:true -- falseUnicode判斷結(jié)果 :true詳細(xì)判斷列表:不 --&gt; 是要 --&gt; 是啊 --&gt; 是===========&gt; 測(cè)試字符串:やめて正則判斷:false -- falseUnicode判斷結(jié)果 :false詳細(xì)判斷列表:や --&gt; 否め --&gt; 否て --&gt; 否===========&gt; 測(cè)試字符串:韓佳人正則判斷:true -- falseUnicode判斷結(jié)果 :true詳細(xì)判斷列表:韓 --&gt; 是佳 --&gt; 是人 --&gt; 是===========&gt; 測(cè)試字符串:???正則判斷:false -- falseUnicode判斷結(jié)果 :false詳細(xì)判斷列表:? --&gt; 否? --&gt; 否? --&gt; 否


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 赞皇县| 尉氏县| 渭南市| 河北省| 梧州市| 丰原市| 珲春市| 闵行区| 金华市| 喀喇| 安西县| 南雄市| 建瓯市| 遵化市| 乌兰浩特市| 饶河县| 洛浦县| 新野县| 政和县| 剑河县| 香河县| 吉水县| 阳春市| 罗江县| 平果县| 溆浦县| 谷城县| 临泉县| 开阳县| 韶山市| 邹城市| 白城市| 满城县| 长顺县| 鄂尔多斯市| 新余市| 临武县| 德清县| 临沂市| 铜川市| 临邑县|