java在字符串中统计出指定字符串出现的次数

功能概述:实现了在字符串中统计指定字符串出现的次数

import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Statistics {

	/**
	 * 方法1:使用String类的contain()方法,判断整串中是否包含子串
	 * 
	 * @param srcStr
	 *            父字符串
	 * @param findStr
	 *            子字符串
	 * @return
	 */
	public static int count1(String srcStr, String findStr) {
		int count = 0;
		int index = 0;
		/*
		 * indexOf()的用法:返回字符中indexOf(String)中子串String在父串中首次出现的位置,从0开始!没有返回-1
		 * 方便判断和截取字符串!
		 */
		while ((index = srcStr.indexOf(findStr, index)) != -1) {// 如果key在str中存在
			index = index + findStr.length();
			count++;// 找到一次统计一次

		}

		return count;
	}

	/**
	 * 方法2:Java正则表达式Pattern和Matcher类
	 * 
	 * @param srcStr
	 * @param findStr
	 * @return
	 */
	public static int count2(String srcStr, String findStr) {
		int count = 0;
		Pattern pattern = Pattern.compile(findStr);// 通过静态方法compile(String regex)方法来创建,将给定的正则表达式编译并赋予给Pattern类
		Matcher matcher = pattern.matcher(srcStr);//
		while (matcher.find()) {// boolean find() 对字符串进行匹配,匹配到的字符串可以在任何位置
			count++;
		}
		return count;
	}

	/**
	 * 方法3:利用HashMap 
	 * 思路:HashMap的key是不允许重复的,如果已存在该key,后put的键值对会覆盖已经存在的键值对
	 * 
	 * @param srcStr
	 * 
	 * @return
	 */
	public static void count3(String srcStr, String findStr) {
		// 将字符串转换为字符数组
		char[] srcChars = srcStr.toCharArray();
		char find = findStr.charAt(0);// 将要查找的字符串转换为char类型
		// 定义一个HashMap
		HashMap hm = new HashMap();
		// 遍历字符数组
		for (char c : srcChars) {
			// 当hm中不存在key为c时,将该键值对保存到hm中
			if (!hm.containsKey(c)) {
				hm.put(c, 1);
			} else {
				// 如果hm中存在key为c时,覆盖掉已经保存的键值对
				hm.put(c, hm.get(c) + 1);
			}
		}
		int count = 0;
		// 遍历hm,得到key为find的value值
		for (Character key : hm.keySet()) {
			count = hm.get(find);
		}
		System.out.println("count3方法:" + find + "在" + srcStr + "中出现的次数为:"
				+ count);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String srcStr = "asdfdfggffsasfaf";
		String findStr = "g";

		int count1 = count1(srcStr, findStr);
		int count2 = count2(srcStr, findStr);
		System.out.println("count1方法:" + findStr + "在" + srcStr + "中出现的次数为:"
				+ count1);
		System.out.println("count2方法:" + findStr + "在" + srcStr + "中出现的次数为:"
				+ count2);

		count3(srcStr, findStr);
	}
}

输出的结果:

count1方法:g在asdfdfggffsasfaf中出现的次数为:2
count2方法:g在asdfdfggffsasfaf中出现的次数为:2
count3方法:g在asdfdfggffsasfaf中出现的次数为:2

 

你可能感兴趣的:(java)