成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java 判斷中文字符

Jingbin_ / 854人閱讀

摘要:項(xiàng)目偶爾需要對(duì)中文字符做一些處理,所以搜集了這個(gè)判斷中文字符的代碼片段,分享給大家。等符號(hào)是否全是漢字根據(jù)漢字編碼范圍進(jìn)行判斷統(tǒng)一漢字不包含中文的,。等符號(hào)如果僅僅去判斷是否是中文,不需判斷中文標(biāo)點(diǎn)的話(huà),推薦使用正則去匹配,可能更高效點(diǎn)。

項(xiàng)目偶爾需要對(duì)中文字符做一些處理,所以搜集了這個(gè)判斷中文字符的代碼片段,分享給大家。

直接貼出代碼了,里面有詳細(xì)的注釋。

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.!@#$%^&*()_+-={}|[];":"?";
        // 純中文(不含中文標(biāo)點(diǎn))
        String s2 = "你好中國(guó)";
        // 純中文(含中文標(biāo)點(diǎn))
        String s3 = "你好,中國(guó)?!丁罚骸啊薄?;()【】?。ぁ?;
        // 韓文
        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("-------分割線(xiàn)-------");
        System.out.println("s1是否全是中文:" + isChineseByRange(s1));// false
        System.out.println("s2是否全是中文:" + isChineseByRange(s2));// true
        System.out.println("s3是否全是中文:" + isChineseByRange(s3));// false 中文標(biāo)點(diǎn)不在范圍內(nèi)
        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("-------分割線(xiàn)-------");
        // 2 使用字符范圍正則判斷(結(jié)果同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("-------分割線(xiàn)-------");
        System.out.println("s1是否全是中文:" + isChineseByReg(s1));// false
        System.out.println("s2是否全是中文:" + isChineseByReg(s2));// true
        System.out.println("s3是否全是中文:" + isChineseByReg(s3));// false 中文標(biāo)點(diǎn)不在范圍內(nèi)
        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("-------分割線(xiàn)-------");
        // 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("-------分割線(xiàn)-------");
        System.out.println("s1是否全是中文:" + isChinese(s1));// false
        System.out.println("s2是否全是中文:" + isChinese(s2));// true
        System.out.println("s3是否全是中文:" + isChinese(s3));// true 中文標(biāo)點(diǎn)也被包含進(jìn)來(lái)
        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

    }

    /**
     * 是否包含中文字符
* 包含中文標(biāo)點(diǎn)符號(hào)
* * @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; } /** * 是否全是中文字符
* 包含中文標(biāo)點(diǎn)符號(hào)
* * @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; } /** * 是否是中文字符
* 包含中文標(biāo)點(diǎn)符號(hào)
* * @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; } /** * 是否包含漢字
* 根據(jù)漢字編碼范圍進(jìn)行判斷
* CJK統(tǒng)一漢字(不包含中文的,。《》()“‘’”、!¥等符號(hào))
* * @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(); } /** * 是否全是漢字
* 根據(jù)漢字編碼范圍進(jìn)行判斷
* CJK統(tǒng)一漢字(不包含中文的,。《》()“‘’”、?。さ确?hào))
* * @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(); } /** * 是否包含漢字
* 根據(jù)漢字編碼范圍進(jìn)行判斷
* CJK統(tǒng)一漢字(不包含中文的,?!丁罚ǎ啊薄ⅲ。さ确?hào))
* * @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; } /** * 是否全是漢字
* 根據(jù)漢字編碼范圍進(jìn)行判斷
* CJK統(tǒng)一漢字(不包含中文的,?!丁罚ǎ啊薄ⅲ。さ确?hào))
* * @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; } }

如果僅僅去判斷是否是中文,不需判斷中文標(biāo)點(diǎn)的話(huà),推薦使用正則去匹配,可能更高效點(diǎn)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65430.html

相關(guān)文章

  • 【面試】Java基礎(chǔ)的那些事-Thr

    摘要:為了提高程序運(yùn)行的效率,在軟件發(fā)布后,檢查默認(rèn)是被關(guān)閉的。注意不能保證原子性,不能代替,且其會(huì)阻止編譯器對(duì)代碼的優(yōu)化。以下方法用來(lái)判斷一個(gè)字符串中是否包含中文字符。 前言 面試中對(duì)于技術(shù)職位,一般分筆試與面談,如果面試官的一些小問(wèn)題你可以立馬找到對(duì)應(yīng)的知識(shí)點(diǎn)擴(kuò)展開(kāi)來(lái),那么這就是你的優(yōu)勢(shì),本系列將講述一些java面試中的事,不會(huì)很詳細(xì),但是應(yīng)該比較全面吧。 主要內(nèi)容 assert有什么作...

    ShowerSun 評(píng)論0 收藏0
  • Java 輸入/輸出 I/O流 RandomAccessFile

    摘要:當(dāng)使用節(jié)點(diǎn)流進(jìn)行輸入輸出時(shí),程序直接連接到實(shí)際的數(shù)據(jù)源,和時(shí)間的輸入輸出節(jié)點(diǎn)連接處理流則用于對(duì)一個(gè)已存在的流進(jìn)行連接或封裝,通過(guò)封裝后的流來(lái)實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě)功能,處理流也被稱(chēng)為高級(jí)流。 文件的編碼 文本文件就是字節(jié)序列,可以是任意編碼形式。在中文操作系統(tǒng)上直接創(chuàng)建文本文件,則該文本文件只能識(shí)別ANSI編碼,其他編碼方式會(huì)產(chǎn)生亂碼 package imooc.io; import java...

    Eirunye 評(píng)論0 收藏0
  • java實(shí)現(xiàn)瀏覽器下載文件,并解決兼容各瀏覽器的文件下載中文亂碼

    摘要:瀏覽器下載代碼如下通過(guò)循環(huán)將讀入的文件的內(nèi)容輸出到瀏覽器中如果文件名為中文,上面的代碼下載的文件名會(huì)亂碼。解決中文亂碼方法拿到瀏覽器請(qǐng)求的判斷是否包含,是則直接講文件名轉(zhuǎn)換為,否則使用轉(zhuǎn)換。 場(chǎng)景描述: 由于項(xiàng)目需求,需要支持瀏覽器下載文件,比如招聘網(wǎng)站的在線(xiàn)簡(jiǎn)歷下載。 瀏覽器下載代碼如下: public static void downloadFile(File file,...

    tunny 評(píng)論0 收藏0
  • Java編程基礎(chǔ)21——IO(字節(jié)流)

    摘要:流按操作類(lèi)型分為兩種字節(jié)流字節(jié)流可以操作任何數(shù)據(jù)因?yàn)樵谟?jì)算機(jī)中任何數(shù)據(jù)都是以字節(jié)的形式存儲(chǔ)的字符流字符流只能操作純字符數(shù)據(jù),比較方便。 1_IO流概述及其分類(lèi) 1.概念 IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸 Java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式 Java用于操作流的類(lèi)都在IO包中 流按流向分為兩種:輸入流,輸出流。 流按操作類(lèi)型分為兩種: 字節(jié)流 : 字節(jié)流可以操作任何數(shù)據(jù),因?yàn)樵?..

    yanbingyun1990 評(píng)論0 收藏0
  • java學(xué)習(xí)筆記 - 標(biāo)識(shí)符和關(guān)鍵字

    摘要:標(biāo)識(shí)符和關(guān)鍵字標(biāo)識(shí)符可以用來(lái)表示文件名,變量名,類(lèi)名,接口名和成員方法等。字符集是字符集,該字符集一個(gè)字符占兩個(gè)字節(jié)。標(biāo)示符就是由字母和數(shù)字組成的,除了關(guān)鍵字之外的字符序列。 標(biāo)識(shí)符和關(guān)鍵字 標(biāo)識(shí)符可以用來(lái)表示文件名,變量名,類(lèi)名,接口名和成員方法等。關(guān)鍵字是Java語(yǔ)言中保留的一些英文單詞,具有特殊的含義。 java字符集是Unicode字符集,該字符集一個(gè)字符占兩個(gè)字節(jié)。 java...

    qianfeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<