1. 程式人生 > >String中統計數字,字母,漢字等個數

String中統計數字,字母,漢字等個數

首先要分兩個方面來區分,第一種是不需要轉換成char陣列的,另一種是需要轉換成char陣列的;
1.使用String進行比較:
1>這裡為了取出部分字串,我們用到了String中的substring方法,在此方法中你可以輸入開始和結束的,然後根據獲取到的字串進行比較

String s4 = new String("123nfa ,rwerew234");
        //正則表示式字串必須先被編譯為Pattern物件,然後再利用該Pattern物件建立對應的Matcher物件
        Pattern pattern = Pattern.compile("[0-9]*"
); for (int i = 0; i < s4.length(); i++) { //將字串擷取,這裡只演示擷取一個 String s5 = s4.substring(i,i+1); //利用該Pattern物件建立對應的Matcher物件 if(pattern.matcher(s5).matches()){ num++; } }
    這裡需要注意的是大寫字母:[A-Z]+;小寫字母:[a-z]+;漢字:[\u4e000-\u9fa5]

2.將String字串轉換為char陣列:

char[] ch = s.toCharArray();

再使用for迴圈獲取內容,比較方法有三種:
1>使用Character自帶的方法進行比較:

for (int i = 0; i < ch.length; i++) {
            //第一種,使用Character自己的方法來判斷
            char c = ch[i];
            if(Character.isDigit(c)){
                num++;
            }
            if
(Character.isLowerCase(c)){ //isUpperCase大寫字母 //isLetter 字母 abc++; }else if(Character.isSpace(c)){ //空格 但此方法已經過時 space++; }else{ qita++; } }

2>使用ASCII編碼:

//第二種使用ascII編碼
            if(ch[i]>= 48 && ch[i]<=57){ //代表0-9
                num++;
            }else if(ch[i]>=65 && ch[i]<= 90){ //代表大寫:A-Z 小寫:a-z 為 97-122
                abc++;
            }else if(ch[i] == 32){ //代表空格 
                space++;
            }

3>自己進行判斷
注意這裡進行比較的時候需要使用單引號,來證明比較的是字元而不是ASCII碼

char c = ch[i];
            if(c>='0' && c<='9'){
                num++;
            }else if(c>='a' && c<='z'){
                abc++;
            }else if(c == ' '){
                space++;
            }else if(c == ','){
                qita++;
            }

希望大家筆試順利!!!