java - length - string index of example




在Java中查找字符串中第二次出現的子字符串 (4)

你可以編寫一個函數來返回出現位置的數組,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;
}

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

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


使用indexOf()重載版本,它將起始索引(fromIndex)作為第二個參數:

str.indexOf("is", str.indexOf("is") + 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

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

此重載開始從給定索引中查找子字符串。





indexof