欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 完美判斷中文字符的方法

 更新時(shí)間:2013年02月26日 16:41:45   作者:  
Java判斷一個(gè)字符串是否有中文一般情況是利用Unicode編碼正則來做判斷,但是其實(shí)這個(gè)區(qū)間來判斷中文不是非常精確,以下是比較完善的判斷方法

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

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

復(fù)制代碼 代碼如下:

import java.util.regex.Pattern;

public class CharUtil {

    public static void main(String[] args) {
        String[] strArr = new String[] { "www.micmiu.com", "!@#$%^&*()_+{}[]|\"'?/:;<>,.", "?。ぁǎ?;“”‘'《》,。?、", "不要啊", "やめて", "韓佳人", "???" };
        for (String str : strArr) {
            System.out.println("===========> 測試字符串:" + str);
            System.out.println("正則判斷結(jié)果:" + 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();
    }
}

相關(guān)文章

  • DecimalFormat多種用法詳解

    DecimalFormat多種用法詳解

    這篇文章主要為大家詳細(xì)介紹了DecimalFormat的多種用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • feign客戶端HTTP狀態(tài)碼為204時(shí)?響應(yīng)體被忽略的問題

    feign客戶端HTTP狀態(tài)碼為204時(shí)?響應(yīng)體被忽略的問題

    這篇文章主要介紹了feign客戶端HTTP狀態(tài)碼為204時(shí)?響應(yīng)體被忽略的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • eclipse輸出Hello World的實(shí)現(xiàn)方法

    eclipse輸出Hello World的實(shí)現(xiàn)方法

    這篇文章主要介紹了eclipse輸出Hello World的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java?RabbitMQ消息隊(duì)列詳解常見問題

    Java?RabbitMQ消息隊(duì)列詳解常見問題

    消息隊(duì)列是最古老的中間件之一,從系統(tǒng)之間有通信需求開始,就自然產(chǎn)生了消息隊(duì)列。本文告訴什么是消息隊(duì)列,為什么需要消息隊(duì)列,常見的消息隊(duì)列有哪些,RabbitMQ的部署和使用
    2022-07-07
  • JAVA與SQL 中的null與NULL解析

    JAVA與SQL 中的null與NULL解析

    這篇文章主要介紹了JAVA與SQL 中的null與NULL解析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法

    SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖

    IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖

    在當(dāng)前的開發(fā)中Spring Boot開發(fā)框架已經(jīng)成為主流,下面這篇文章主要給大家介紹了關(guān)于IDEA運(yùn)行SpringBoot項(xiàng)目的超詳細(xì)步驟截圖,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Java并發(fā)編程預(yù)防死鎖過程詳解

    Java并發(fā)編程預(yù)防死鎖過程詳解

    這篇文章主要介紹了Java并發(fā)編程預(yù)防死鎖過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Spring Cloud Config實(shí)現(xiàn)分布式配置中心

    Spring Cloud Config實(shí)現(xiàn)分布式配置中心

    這篇文章主要介紹了Spring Cloud Config實(shí)現(xiàn)分布式配置中心,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    Java實(shí)現(xiàn)圖書管理系統(tǒng)的示例代碼

    這篇文章將通過Java實(shí)現(xiàn)一個(gè)簡答的圖書管理系統(tǒng),本圖書管理系統(tǒng)用對象數(shù)組的方式來提供操作方法,比較特別,建議新手學(xué)習(xí),這對理解Java面向?qū)ο笥泻艽髱椭?/div> 2022-11-11

最新評論