有一個字符串,其中包含中文字符、英文字符和數字、空格及其餘字符,請統計和打印出各個字符的個數。

package cglib;git

public class StringNumber {
    /*也能夠用正則
     *  Pattern p = Pattern.compile("[a-zA-Z]");
     *  Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]");
     * Pattern p = Pattern.compile("\\d");  
        Matcher m = p.matcher(str);  
        while(m.find()){  
            count++;  
        }  
     *
     *
     *
     *
     *
     *
     * */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         String str = "adbs13姿z勢12年概~3!a @x # $率 論zs12 szsgss  1234@#¥說說愛き ,。?!%……&*()——{}【】";
         StringNumber countCharacter = new StringNumber();
         countCharacter.count(str);
        
    }
    
    public void count(String str){
        if (null == str || str.equals("")) {
            System.out.println("字符串爲空");
            return;
        }
        int engishCount = 0;
        int chineseCount = 0;
         int digitCount = 0;
         int spaceCount = 0;
         int otherCount = 0;
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)>= '0' && str.charAt(i)<='9'){
                digitCount++;
            }
            else if((str.charAt(i)>= 'a' && str.charAt(i)<='z')||(str.charAt(i)>= 'A' && str.charAt(i)<='Z')){
                engishCount++;
            } else if (str.charAt(i) ==' ') {
                spaceCount ++;
            } else if (isChinese(str.charAt(i))) {
                chineseCount ++;
            } else {
                otherCount ++;
            }
        }
        System.out.println("中文:"+chineseCount);
        System.out.println("英文:"+engishCount);
        System.out.println("數字:"+digitCount);
        System.out.println("空格:"+spaceCount);
        System.out.println("其餘字符:"+otherCount);
        
    }
    /***
     * 判斷字符是否爲中文
     * @param ch 須要判斷的字符
     * @return 中文返回true,非中文返回false
     */
    public boolean isChinese(char ch) {
        //獲取此字符的UniCodeBlock
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(ch);
        //  GENERAL_PUNCTUATION 判斷中文的「號  
        //  CJK_SYMBOLS_AND_PUNCTUATION 判斷中文的。號  
        //  HALFWIDTH_AND_FULLWIDTH_FORMS 判斷中文的,號
        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) {
            System.out.println(ch + " 是中文");
            return true;
        }
        return false;
    }
    
     
    }
    spa

輸出:.net

姿 是中文
勢 是中文
年 是中文
概 是中文
率 是中文
論 是中文
¥ 是中文
說 是中文
說 是中文
愛 是中文
, 是中文
。 是中文
? 是中文
! 是中文
… 是中文
… 是中文
( 是中文
) 是中文
— 是中文
— 是中文
【 是中文
】 是中文
中文:22
英文:15
數字:11
空格:8
其餘字符:13code

相關文章
相關標籤/搜索