可以使用正則表達式+中文字符編碼區(qū)間驗證一個字符串中是否包含漢字
創(chuàng)新互聯(lián)主營德保網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),德保h5微信小程序開發(fā)搭建,德保網(wǎng)站營銷推廣歡迎德保等地區(qū)企業(yè)咨詢
代碼如下:
public static void main(String[] args) {
int count = 0;
String regEx = "[\\u4e00-\\u9fa5]";
//System.out.println(regEx);
String str = "中文fdas ";
//System.out.println(str);
Pattern p = Pattern點抗 pile(regEx);
Matcher m = p.matcher(str);
while (m.find()) {
for (int i = 0; i = m.groupCount(); i++) {
count = count + 1;
}
}
System.out.println("共有 " + count + "個 ");
}
【實例描述】
字符串中可以包含數(shù)字,字母、漢字或者其他字符。使用Character類的isDigit()方法可以判斷字符中的某個字符是否為數(shù)字,使用Character類的isLetter()方法可以判斷字符中的某個字符是否為字母。實例中將介紹一種方法用來判斷字符串中的某個字符是否為漢字,通過此方法可以計算字符串中漢字的數(shù)量。實例的運行效果如圖4.24所示。
【實現(xiàn)過程】
在Eclipse中新建項目ChineseCharacter,并在其中創(chuàng)建一個ChineseCharacter.java文件。在該類的主方法中創(chuàng)建標準輸入流的掃描器對象,接收用戶輸入的字符串。我們在程序中使用matches()方法來統(tǒng)計該字符串中漢字的個數(shù)。核心代碼如下所示:
protectedvoiddo_button_actionPerformed(ActionEvente){Stringtext=chineseArea.getText();//獲取用戶輸入intamount=0;//創(chuàng)建漢字數(shù)量計數(shù)器for(inti=0;itext.length();i++){//遍歷字符串每一個字符//使用正則表達式判斷字符是否屬于漢字編碼booleanmatches=Pattern.matches("^[\u4E00-\u9FA5]{0,}$",""+text.charAt(i));if(matches){//如果是漢字amount++;//累加計數(shù)器}}umField.setText(amount+"");//在文本框顯示漢字數(shù)量}
【代碼解析】
本實例的關(guān)鍵點在于正則表達式的使用。Java提供了Pattern用于正則表達式的編譯表示形式,該類提供的靜態(tài)方法matches()可以執(zhí)行正則表達式的匹配。該方法編譯給定正則表達式并嘗試給定輸入與其匹配。如果要匹配的字符序列與正則表達式匹配則返回true,否則返回false。其聲明語法如下:
publicstaticbooleanmatches(Stringregex,CharSequenceinput);【知識擴展】
使用正則表達式可以方便地進行字符串操作,正則表達式經(jīng)常被用來驗證用戶輸入的信息,如可以判斷用戶輸入的格式是否正確。本實例中使用正則表達式來判斷用戶輸入的字符串是否為漢字,如果為漢字則計數(shù)器加1,最后得到字符串中所有漢字的數(shù)量。
出現(xiàn)亂碼我想應(yīng)該是這樣的情況
1.你的代碼中有漢字,默認情況下都是GB2312碼表,如果你將.java文件以UTF-8的編碼存儲,那么.java文件里的都是UTF-8形式的數(shù)據(jù)了
2.如果在DOS里出現(xiàn)漢字的話,這個漢字是采用系統(tǒng)默認的也就是GB2312碼表進行解碼的
.java文件在內(nèi)存中以二進制數(shù)據(jù)存在即00101010這種樣式,我以UTF-8解碼成二進制,則必須以UTF-8編碼才能得到我們所能看到的內(nèi)容, 有時候我們看網(wǎng)頁或者一些文件用記事本打開全是亂碼,這個就是碼表用錯了的緣故,有時候我們只需要換換碼表,就輕松解決了
命令行是在dos系統(tǒng)下運行,因為dos不支持漢子,所以命令行下不支持漢子,與java本身支持不支持無關(guān).
另外,三樓的朋友,純dos下要實現(xiàn)漢字需要自己動手弄漢字庫吧,或者用圖形方法畫出來,字符流錯了肯定會出現(xiàn)亂碼,但這里的亂碼不一定是字符流的問題。當然如果你的系統(tǒng)實現(xiàn)了漢字庫,或者是用了中國特色的dos版本,那倒是可以的。
也就是說,首先dos能支持才行,然后才是字符流的問題,當然也可能是別的其他問題。這是我的理解,錯了請指教 呵呵