我們給出了一個字符串,例如"itiswhatitis"
和一個子字符串,比如"is"
。 當字符串"is"
在原始字符串中第二次出現時,我需要找到'i'
的索引。在Java中查找字符串中第二次出現的子字符串
String.indexOf("is")
在這種情況下將返回2。在這種情況下,我希望輸出爲10。
我們給出了一個字符串,例如"itiswhatitis"
和一個子字符串,比如"is"
。 當字符串"is"
在原始字符串中第二次出現時,我需要找到'i'
的索引。在Java中查找字符串中第二次出現的子字符串
String.indexOf("is")
在這種情況下將返回2。在這種情況下,我希望輸出爲10。
使用重載版本的indexOf()
,這需要起始東印度作爲第二個參數:
str.indexOf("is", str.indexOf("is") + 1);
int first = string.indexOf("is");
int second = string.indexOf("is", first + 1);
該重載開始尋找來自給定索引的子串。
我覺得一個循環都可以使用。
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
您可以編寫一個函數返回的發生位置的陣列,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;
}
我使用: Apache Commons Lang: StringUtils.ordinalIndexOf()
StringUtils.ordinalIndexOf("Java Language", "a", 2)
如果什麼發生是兩次以上? –
然後沒有什麼特別的事情發生,它仍然需要第二次發生。 –
第三次發生的指數呢! –