2013-09-26 196 views
36

我們給出了一個字符串,例如"itiswhatitis"和一個子字符串,比如"is"。 當字符串"is"在原始字符串中第二次出現時,我需要找到'i'的索引。在Java中查找字符串中第二次出現的子字符串

String.indexOf("is")在這種情況下將返回2。在這種情況下,我希望輸出爲10。

回答

84

使用重載版本的indexOf(),這需要起始東印度作爲第二個參數:

str.indexOf("is", str.indexOf("is") + 1); 
19
int first = string.indexOf("is"); 
int second = string.indexOf("is", first + 1); 

該重載開始尋找來自給定索引的子串。

+0

如果什麼發生是兩次以上? –

+1

然後沒有什麼特別的事情發生,它仍然需要第二次發生。 –

+0

第三次發生的指數呢! –

0

我覺得一個循環都可以使用。

1 - check if the last index of substring is not the end of the main string. 
2 - take a new substring from the last index of the substring to the last index of the main string and check if it contains the search string 
3 - repeat the steps in a loop 
0

您可以編寫一個函數返回的發生位置的陣列,Java有String.regionMatches功能,會非常方便

public static ArrayList<Integer> occurrencesPos(String str, String substr) { 
    final boolean ignoreCase = true; 
    int substrLength = substr.length(); 
    int strLength = str.length(); 

    ArrayList<Integer> occurrenceArr = new ArrayList<Integer>(); 

    for(int i = 0; i < strLength - substrLength + 1; i++) { 
     if(str.regionMatches(ignoreCase, i, substr, 0, substrLength)) { 
      occurrenceArr.add(i); 
     } 
    } 
    return occurrenceArr; 
} 
相關問題