统计字符串字符个数,用String相关的方法实现

定义一个字符串 apple is a apple 输出a有3个p有4个 l有2个 i有一个 以此类推

主要是利用hashmap来统计重复元素

 String str="apple is a apple";
Map<String,Integer> map=new HashMap<String,Integer>();
for(char ch:str.getChars())
{
    String ss=String.valueOf(ch);
    Integer count=map.get(ss);
    if(count==null)
        count=1;
    map.put(ss,count);
}
for(String st:map.keys())
{
    System.out.println(st+":"+map.get(st));
}
 分别统计字符串的数字、字母、空格和其他字符(包括汉字、标点符号)的个数,并计算及字符串的总字符数。

Java代码  收藏代码
package util;  


public class CountStr {  
    /** 
     * 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 
     * @author Mr.Liao 
     * @date 2013-09-04 
     * 短信发送平台,短信字数控制查询方法 
     */  
        public static void main(String[] args) {  

            //String str = "adasf AAADFD我是中文,,》123";  
            //String str = "金马甲高端商品交易平台--2013全城热恋克拉钻石项目预售,18个月,三万起步,年化8%,预购请致电展恒私人财富:18611297979";  
            String str = "展恒理财,2004年在北京成立,是国内最大的理财咨询类机构之一。获得国家颁发的独立基金销售牌照.是2013年中国网球公开赛10大核心赞助商之一。公司成立10年来,在为客户进行全面的家庭财务规划方面积累了十分丰富的经验。目前拥有中高端忠实客户10000多名,配置客户资金超过200亿元,位列行业排名前三强。";  

            System.out.println("[总字符数1]:"+countSum(str));  
            System.out.println("--------------------");               
            System.out.println("[总字符数2]:"+countSum2(str));    
            System.out.println("--------------------");               
            System.out.println("[总字符数3]:"+str.length());  
        }  

        public static int countSum(String str) {  
            int unicodeCount = 0;  
            int szCount = 0;  
            int zmCount = 0;  

            for (int i = 0; i < str.length(); i++) {  

                char c = str.charAt(i);  
                if (c >= '0' && c <= '9') {  
                    szCount++;  
                }else if((c >= 'a' && c<='z') || (c >= 'A' && c<='Z')){  
                    zmCount++;  
                }else{  
                    unicodeCount++;  
                }  
            }  
            System.out.println("Unicode:"+unicodeCount);  
            System.out.println("数字:"+szCount);  
            System.out.println("字母:"+zmCount);            
            int sum=szCount+zmCount+unicodeCount;  
            return sum;  
        }     
        public static int countSum2(String str) {  
            int abccount = 0;  
            int numcount = 0;  
            int spacecount = 0;  
            int othercount = 0;  
            char[] b = str.toCharArray();  
            for(int i = 0; i < b.length; i++){  
                if(b[i]>='a'&&b[i]<='z'||b[i]>='A'&&b[i]<='Z'){  
                    abccount++;  
                }else if(b[i]>='0'&&b[i]<='9'){  
                    numcount++;  
                }else if(b[i]==' '){  
                    spacecount++;  
                }else{  
                    othercount++;  
                }  
        }  
            int sum=abccount+numcount+spacecount+othercount;  
            System.out.println("字符串中含有的英文字母数为:" + abccount);  
            System.out.println("字符串中含有的数字数为:" + numcount);  
            System.out.println("字符串中含有的空格数为:" + spacecount);  
            System.out.println("字符串中含有的其他字符为:" + othercount);  
            return sum;   
    }  
}  


控制台结果:
Unicode:132
数字:20
字母:0
[总字符数1]:152
--------------------
字符串中含有的英文字母数为:0
字符串中含有的数字数为:20
字符串中含有的空格数为:0
字符串中含有的其他字符为:132
[总字符数2]:152
--------------------
[总字符数3]:152
 import java.util.Scanner;  

public class 统计字符 {  
    public static void main(String[] args) {  

        Scanner sc = new Scanner(System.in);  
        int[] a = new int[26];//数组存放对应26个字母的出现次数比如a[0]的值对应字母a出现的次数,a[2]的值对应c出现的次数。。。  
        System.out.println("请输入一串小写字符串");  
        String str=sc.nextLine();  
        str=str.trim().toLowerCase();//去掉前后空格并且全转为小写字母  

        //此for循环求各个字母出现的次数  
        for (int i = 0; i < str.length(); i++)  
        {  
            char c = str.charAt(i);//依次取出每个字母  
            int index=c-'a';//这样就可以得到每个字母对应的数组下标  
            a[index]=a[index]+1;//对应字母出现则存储字母的数组加1  
        }  

        //此for循环打印每个字母出现的次数,没有出现则不打印输出  
        for (int i = 0; i < a.length; i++)  
        {  
            if(a[i]!=0)//等于0相当于这个字母没出现就没必要打印  
            {  
                System.out.println("字母"+(char)(i+'a')+"出现:"+a[i]+"次");  
            }  
        }  
    }  

}  

使用HashMap实现,利用Map键值对的特性简单高效

        String s = new String("qazwsxqqqazw你好世界-=+5214");

        System.out.println(s.substring(0, s.indexOf("-")));

        HashMap<Character, Integer> hm = new HashMap<Character,Integer>();
        char[] c = s.toCharArray();
        for(int i = 0; i<c.length;i++){
            if(hm.containsKey(c[i])){

                hm.put(c[i],hm.get(c[i])+1 );
            }else{
                hm.put(c[i], 1);
            }
        }

        for(Character key : hm.keySet()){
            System.out.println(key + " = " + hm.get(key));
        }