程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java如何獲取字符串strSub在父字符串strFather中出現的次數

java如何獲取字符串strSub在父字符串strFather中出現的次數

編輯:關於JAVA

我的思路是這樣的:設定一個跑標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;
	}
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved