Finding second occurrence of a substring in a string in Java

前端 未结 5 1830
孤城傲影
孤城傲影 2020-12-01 06:16

We are given a string, say, \"itiswhatitis\" and a substring, say, \"is\". I need to find the index of \'i\' when the string \"i

相关标签:
5条回答
  • 2020-12-01 06:34
    int first = string.indexOf("is");
    int second = string.indexOf("is", first + 1);
    

    This overload starts looking for the substring from the given index.

    0 讨论(0)
  • 2020-12-01 06:34

    i think a loop can be used.

    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 讨论(0)
  • 2020-12-01 06:39

    You can write a function to return array of occurrence positions, Java has String.regionMatches function which is quite handy

    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;
    }
    
    0 讨论(0)
  • 2020-12-01 06:41

    I am using: Apache Commons Lang: StringUtils.ordinalIndexOf()

    StringUtils.ordinalIndexOf("Java Language", "a", 2)
    
    0 讨论(0)
  • 2020-12-01 06:49

    Use overloaded version of indexOf(), which takes the starting index (fromIndex) as 2nd parameter:

    str.indexOf("is", str.indexOf("is") + 1);
    
    0 讨论(0)
提交回复
热议问题