Suchen Sie alle vorkommen von substring in string in Java

Ich versuche zu finden, alle vorkommen eines Teilstrings in einem string in Java.

Zum Beispiel:
Suche nach "ababsdfasdfhelloasdf" für "asdf" zurückkehren würde, [8,17] da gibt es 2 "asdf"'s, einem an position 8 und eine am 17.
Suche nach "aaaaaa" für "aa" zurückkehren würde, [0,1,2,3,4], weil es ist ein "aa" - an den Positionen 0,1,2,3, und 4.

Habe ich versucht, dieses:

public List<Integer> findSubstrings(String inwords, String inword) {
    String copyOfWords = inwords;
    List<Integer> indicesOfWord = new ArrayList<Integer>();
    int currentStartIndex = niwords.indexOf(inword);
    int indexat = 0;
    System.out.println(currentStartIndex);
    while (cthing1 > 0) {
        indicesOfWord.add(currentStartIndex+indexat);
        System.out.println(currentStartIndex);
        System.out.println(indicesOfWord);
        indexat += cthing1;
        copyOfWords = copyOfWords.substring(cthing1);
        System.out.println(copyOfWords);
        cthing1 = copyOfWords.indexOf(inword);
    }

Dieses problem kann gelöst werden, in Python wie folgt:

indices = [m.start() for m in re.finditer(word, a.lower())]

wo "Wort" ist das Wort, das ich Suche, und "a" ist die Zeichenfolge, ich bin auf der Suche durch.

Wie kann ich erreichen, das in Java?

  • Ich denke, die top-post hier kann Ihnen dabei helfen. Für die Indizes, nur drucken oder speichern Sie die lastIndex wie Sie Sie erhalten.
  • Meinst du, dass Sie brauchen, sowas?
  • Nutzen Sie bitte aussagekräftigere Variablennamen. Es ist schwer zu verstehen, was cthing1 oder outthing oder niwords bedeuten. Verwendung Dinge wie lastIndex, indexList usw. Würde es leichter machen, zu verstehen, was du geschrieben hast und es korrigieren.
InformationsquelleAutor Kevin | 2015-09-25
Schreibe einen Kommentar