String in einem String suchen und Anzahl ausgeben

y0dA

Erfahrenes Mitglied
Hi!
Der Titel sagt alles, wie ist es mir schnellstens möglich aus einem String die Anzahl des Vorkommens eines Strings zu ermitteln?

mfg
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 * 
 */
public class StringOccurenceCountExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String string = "aabaabaabaabaaax";
		String searchString = "aa";
		int occurences = 0;
		if (0 != searchString.length()) {
			for (int index = string.indexOf(searchString, 0); index != -1; index = string
					.indexOf(searchString, index + 1)) {
				occurences++;
			}
		}
		System.out.println(occurences);
	}

}

Ausgabe:
Code:
6

Gruß Tom
 
klappt aber nur wenn der gesuchte String auch nur 2 Zeichen hat. Besser wäre doch am ende der forBedingung; index + searchString.length()
dann wäre die länge auch mit beachtet
 
Hallo,

da bekommt man korrekterweise 8...
Code:
aaaaaabaaaaaab
aaa
 aaa
  aaa
   aaa
       aaa
        aaa
         aaa
          aaa
Je nachdem wie man das Auftreten eines Strings interpretiert...

Gruß Tom
 
ich würde darauf das Ergebniss 4 haben wollen und nicht 8.
Obwohl aaa in dem string natürlich 8 mal vorkommt, aber wer sucht schon aaa´s man sucht ja normalerweise richtige Wörter und da haut der Code von Thomas natürlich hin, es sei den durch einen dummen Zufall kommt soetwas zustande: esse und stuttgarter Server abgekürzt sserver in einem String:

essesserver

und schon hat man bei dem Suchbegriff: esse zwei treffer.
weiß jetzt nicht für was du sowas brauchst, daher kann ich nicht beurteilen ob das Ergebniss für dich zufriedenstellend wäre.

PS.: Thomas du kennst dich doch mit JAXB aus, kannst du dir nicht mal meinen Thread von heute "JAXB 2.0 ClassLoader" ansehen
 
Zuletzt bearbeitet:
Hallo,

einfach zu fixen:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Thomas.Darimont
 * 
 */
public class StringOccurenceCountExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        String string = "aaaaaabaaaaaab";
        String searchString = "aaa";
        int occurences = 0;
        boolean eagerMatching = false;
        if (0 != searchString.length()) {
            for (int index = string.indexOf(searchString, 0); index != -1; index = string
                    .indexOf(searchString, eagerMatching ? index + 1 : index + searchString.length())) {
                occurences++;
            }
        }
        System.out.println(occurences);
    }

}

Gruß Tom
 
Zurück