java如何获取字符串strSub在父字符串strFather中出现的次数2016-08-22u013871100我的思路是这样的:设定一个跑标i,遍历到strFather.length()-strSub.length(),每一次的遍历,进行strFather字符串的截取,其中截取的位置为 i -> i+strSub.length()的位置,截取到的字符串strTemp跟strSub进行比较,若相等,则跑标i往后移动 strSub.length() 的位置,并让次数num 加1 。否则i 往后移动一个位置代码如下:
/** * 获取字符串strSub在 父字符串strFather中出现的次数 * @author zhonglinsen * 2016-3-1 下午 */public class StringSubStrExistInFatherStr {public static void main(String[] args) {String str="abeefddfadeeabfkkeeabeeabeerfab";String str1="ab";String str2="ee";String str3="f";System.out.println(getNumSubInFatherStr(str, str1));System.out.println(getNumSubInFatherStr(str, str2));System.out.println(getNumSubInFatherStr(str, str3));}public static int getNumSubInFatherStr(String strFather,String strSub){System.out.println(strFather);int num=0;int i=0;//注意这里的遍历次数: 因为当i置于strFather.length()-strSub.length()时候,如果//URL:http://www.bianceng.cn/Programming/Java/201608/50384.htm//String strTemp=strFather.substring(i,i+strSub.length() 得到的strTemp仍然不是所匹配的,则不需要再往下//遍历了,因为到那个时候若是再执行 strFather.substring(i,i+strSub.length() 就会报异常:下标越界while(i <= strFather.length()-strSub.length()){//if (strFather.indexOf(strSub) != -1) { 这样写明显不对//先进行字符串的截取,再进行equals()匹配,若匹配到了,则跑标往后移动strSub.length()个位置,否则移动一个位置String strTemp=strFather.substring(i,i+strSub.length());if (strSub.equals(strTemp)) {//如果找到了一次strSub num 就加一次 同时跑标i往后移动strSub.length()个位置num += 1;i += strSub.length();}else{//如果找不到strSub那么num不变,而跑标i往后移动一个位置i += 1;}}return num;}}