1.引子
一般的思路是将短字符串放到长字符串中遍历判断,这种常规的思路还是比较麻烦。那么有没有比较简单直接的方式求出结果?
2.技巧
事实上还真有,只要你敢想、敢动脑筋。在做编程的人都知道一条行业基本理念:“不重复造轮子”,我们应该尽量直接使用现成的"轮子"造出多功能的“车子”。Java的系统库不是有String的split( CharSequence)方法可以以指定的符号分隔原有的字符串而形成新的字符串数组吗!这里可以直接用这个短字符串来当分隔符,其方法返回的字符串数组的长度不就跟短字符串出现的次数间有关系嘛(count比length小1)。
3.代码
- 主要代码
public int countOfSubstr(String srcStr,String subStr){
int count=0;
if(srcStr.contains(subStr)){ //只有srcStr中包含subStr时,才做以下的分隔处理,否则直接返回0;
//防止subStr出现在srcStr的首尾位置,分别在源字符串srcStr的首尾加上空格
String _srcStr=" "+srcStr+" ";
String[] strs=_srcStr.split(subStr);
count=strs.length-1;
}else{
System.out.println("源字符串"+srcStr+"中不存在"+subStr+"这样的子字符串");
return 0;
}
System.out.println("子字符串"+subStr+"在"+srcStr+"中出现了"+count+"次数");
return count;
}
- 辅助代码
public static void main(String[] args)
{
Test1 t=new Test1();
t.countOfSubstr("hijava java java jahejavahejavahejava", "java");
}
- 控制台输出