Java实现统计某字符串在另一个字符串中出现的次数——split分隔字符

1.给固定的一个字符串,并实现。

package cn.redcore.test;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class CountStr {

    public static void main(String[] args) {
        String str = "asdfajlksdfjaslgkdfdfsdfg";
        
        Map<String, Integer> map = new HashMap<String, Integer>();
        String[] split = str.split("");
        for(int i=0; i<split.length; i++){
            if(!"".equals(split[i]) && map.containsKey(split[i])){  //如果map当前中包含该单词,那么取得该词当次数值 + 1 
                map.put(split[i], map.get(split[i]) + 1);
            }else if(!"".equals(split[i])){ //如果map当前中不包含该单词,那么将该单词加入到map集合中,该单词作为key,值设为1 
                map.put(split[i],  1);
            }
        }
        Set<String> keySet = map.keySet();
        for(String string : keySet){
            System.out.println(string + "出现的次数:" + map.get(string));
        }

    }

}

2.给固定的一个字符串,封装一个方法。

package com.mqs;  
  
import java.util.HashMap;  
import java.util.Map;  
import java.util.Set;  
  
public class Test1 {  
      
    //输出字符串每个英文字母出现的次数  
    public static void main(String[] args) {  
        printStr("hdusfshhhhsfjksfkssk");  
    }  
      
    public static void printStr(String str){  
        if( str==null || "".equals(str)){  
            System.out.println("字符串不能为空!");  
            return;  
        }  
        Map<String, Integer> pMap = new HashMap<String,Integer>();  
        String[] split = str.split("");  
        for (int i = 0; i < split.length; i++) {  
            if(!"".equals(split[i]) && pMap.containsKey(split[i])){  
                pMap.put(split[i], pMap.get(split[i])+1);  
            } else if(!"".equals(split[i])){  
                pMap.put(split[i], 1);  
            }  
        }  
        Set<String> keySet = pMap.keySet();  
        for (String string : keySet) {  
            System.out.println(string+"出现的次数:"+pMap.get(string));  
        }  
    }  
}  

3.java中split方法的用法

Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:

java.lang.string.split
split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]]) 
stringObj
必选项。要被分解的 String 对象或文字,该对象不会被split方法修改。
separator 
可选项。字符串或正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。 
limit
可选项。该值用来限制返回数组中的元素个数(也就是最多分割成几个数组元素,只有为正数时有影响)
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator不作为任何数组元素的部分返回。
示例1:
      String str="Java string split test";
      String[] strarray=str.split(" ");
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
将输出:
Java
string
split
test

示例2:
      String str="Java string split test";
      String[] strarray=str.split(" ",2);//使用limit,最多分割成2个字符串
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
将输出:
Java
string split test

示例3:
      String str="192.168.0.1";
      String[] strarray=str.split(".");
      for (int i = 0; i < strarray.length; i++)
          System.out.println(strarray[i]);
结果是什么也没输出,将split(".")改为split("//."),将输出正确结果:
192
168
0
1

经验分享:
1、分隔符为“.”(无输出),“|”(不能得到正确结果)转义字符时,“*”,“+”时出错抛出异常,都必须在前面加必须得加"//",如split(//|);
2、如果用"/"作为分隔,就得写成这样:String.split("////"),因为在Java中是用"//"来表示"/"的,字符串得写成这样:String Str="a//b//c";
 转义字符,必须得加"//";
3、如果在一个字符串中有多个分隔符,可以用"|"作为连字符,比如:String str="Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开;

posted @ 2018-06-06 18:01  白灰  阅读(902)  评论(0)    收藏  举报