Java 判斷字符串中是否包含中文的實(shí)例詳解
Java 判斷字符串中是否包含中文的實(shí)例詳解
Java判斷一個(gè)字符串是否有中文是利用Unicode編碼來判斷,因?yàn)橹形牡木幋a區(qū)間為:0x4e00--0x9fbb, 不過通用區(qū)間來判斷中文也不非常精確,因?yàn)橛行┲形牡臉?biāo)點(diǎn)符號(hào)利用區(qū)間判斷會(huì)得到錯(cuò)誤的結(jié)果。而且利用區(qū)間判斷中文效率也并不高,例如:str.substring(i, i + 1).matches("[\\一-\\?]+"),就需要遍歷整個(gè)字符串,如果字符串太長效率非常低,而且判斷標(biāo)點(diǎn)還會(huì)錯(cuò)誤。這里提高 一個(gè)高效準(zhǔn)確的判斷方法,使用Java中的Character類:
實(shí)例代碼:
package test;
import static java.lang.Character.UnicodeBlock.*;
import com.google.common.base.Strings;
public class CheckContainChinese {
public static void main(String[] args) {
String containChinese = "test,我有中文";
String containNoChiese = "test, i don't contain chinese";
System.out.println("containChinese 是否包含中文 :" + checkStringContainChinese(containChinese));
System.out.println("containNoChiese 是否包含中文 :" + checkStringContainChinese(containNoChiese));
}
private static boolean checkStringContainChinese(String checkStr){
if(!Strings.isNullOrEmpty(checkStr)){
char[] checkChars = checkStr.toCharArray();
for(int i = 0; i < checkChars.length; i++){
char checkChar = checkChars[i];
if(checkCharContainChinese(checkChar)){
return true;
}
}
}
return false;
}
private static boolean checkCharContainChinese(char checkChar){
Character.UnicodeBlock ub = Character.UnicodeBlock.of(checkChar);
if(CJK_UNIFIED_IDEOGRAPHS == ub || CJK_COMPATIBILITY_IDEOGRAPHS == ub || CJK_COMPATIBILITY_FORMS == ub ||
CJK_RADICALS_SUPPLEMENT == ub || CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A == ub || CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B == ub){
return true;
}
return false;
}
}
運(yùn)行結(jié)果:

以上就是java 檢查字符串是否含有中文的實(shí)例,如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
SpringBoot使用PropertiesLauncher加載外部jar包
這篇文章主要介紹了SpringBoot使用PropertiesLauncher加載外部jar包,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
java中ThreadLocal和ThreadLocalMap淺析
這篇文章主要介紹了java中ThreadLocal和ThreadLocalMap淺析,ThreadLocal類用來設(shè)置線程私有變量?本身不儲(chǔ)存值?主要提供自身引用?和?操作ThreadLocalMap?屬性值得方法,需要的朋友可以參考下2023-09-09
詳解Java中的時(shí)區(qū)類TimeZone的用法
TimeZone可以用來獲取或者規(guī)定時(shí)區(qū),也可以用來計(jì)算時(shí)差,這里我們就來詳解Java中的時(shí)區(qū)類TimeZone的用法,特別要注意下面所提到的TimeZone相關(guān)的時(shí)間校準(zhǔn)問題.2016-06-06
spring data jpa開啟批量插入、批量更新的問題解析
這篇文章主要介紹了spring data jpa開啟批量插入、批量更新問題,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07
Java源碼深度分析String與StringBuffer及StringBuilder詳解
當(dāng)對(duì)字符串進(jìn)行修改的時(shí)候,需要使用?StringBuffer?和?StringBuilder類,和String類不同的是,StringBuffer和?StringBuilder類的對(duì)象能夠被多次的修改,并且不產(chǎn)生新的未使用對(duì)象,本篇我們來分析分析它們的源碼2022-05-05
Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼)
這篇文章主要介紹了Spring AOP如何自定義注解實(shí)現(xiàn)審計(jì)或日志記錄(完整代碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
出現(xiàn)java.util.ConcurrentModificationException 問題及解決辦法
這篇文章主要介紹了出現(xiàn)java.util.ConcurrentModificationException 問題及解決辦法的相關(guān)資料,需要的朋友可以參考下2017-02-02

