【實例描述】
字符串中可以包含數(shù)字,字母、漢字或者其他字符。使用Character 類的isDigit()方法可以判斷字符中的某個字符是否為數(shù)字,使用Character 類的isLetter()方法可以判斷字符中的某個字符是否為字母。實例中將介紹一種方法用來判斷字符串中的某個字符是否為漢字,通過此方法可以計算字符串中漢字的數(shù)量。實例的運行效果如圖4.24 所示。
【實現(xiàn)過程】
在Eclipse 中新建項目ChineseCharacter,并在其中創(chuàng)建一個ChineseCharacter.java 文件。在該類的主方法中創(chuàng)建標準輸入流的掃描器對象,接收用戶輸入的字符串。我們在程序中使用matches()方法來統(tǒng)計該字符串中漢字的個數(shù)。核心代碼如下所示:
protected void do_button_actionPerformed(ActionEvent e) {
String text = chineseArea.getText(); // 獲取用戶輸入
int amount = 0; // 創(chuàng)建漢字數(shù)量計數(shù)器
for (int i = 0; i < text.length(); i++) { // 遍歷字符串每一個字符
// 使用正則表達式判斷字符是否屬于漢字編碼
boolean matches = 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。其聲明語法如下:
public static boolean matches(String regex,CharSequence input);
【知識擴展】
使用正則表達式可以方便地進行字符串操作,正則表達式經(jīng)常被用來驗證用戶輸入的信息,如可以判斷用戶輸入的格式是否正確。本實例中使用正則表達式來判斷用戶輸入的字符串是否為漢字,如果為漢字則計數(shù)器加1,最后得到字符串中所有漢字的數(shù)量。