tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
8811
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    y0dA y0dA ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    263
    Hi!
    Der Titel sagt alles, wie ist es mir schnellstens möglich aus einem String die Anzahl des Vorkommens eines Strings zu ermitteln?

    mfg
     

  2. #2
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    schau mal hier:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
    /**
     * 
     */
    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 :
    1
    
    6

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  3. #3
    y0dA y0dA ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    263
    Super danke dir!
     

  4. #4
    baschdl baschdl ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    15
    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
     

  5. #5
    y0dA y0dA ist offline Mitglied Brokat
    Registriert seit
    Mar 2007
    Beiträge
    263
    Nein Thomas sein Code funktioniert so wie gepostet.
     

  6. #6
    baschdl baschdl ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    15
    na dann gib mal:

    aaaaaabaaaaaab
    ein und such mal
    aaa
     

  7. #7
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    da bekommt man korrekterweise 8...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    aaaaaabaaaaaab
    aaa
     aaa
      aaa
       aaa
           aaa
            aaa
             aaa
              aaa
    Je nachdem wie man das Auftreten eines Strings interpretiert...

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  8. #8
    baschdl baschdl ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    15
    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
    Geändert von baschdl (30.05.07 um 15:57 Uhr)
     

  9. #9
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    einfach zu fixen:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    /**
     * 
     */
    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
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  10. #10
    baschdl baschdl ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    15
    jup, dat geht auch. ist sogar noch schicker
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 05.01.09, 15:25
  2. [C++]String suchen und ausgeben
    Von Mysterikum im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 07.12.08, 13:40
  3. Antworten: 13
    Letzter Beitrag: 30.05.07, 16:31
  4. String einlesen, ausgeben, suchen, löschen
    Von C-Lerner im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 13.03.06, 09:58
  5. Antworten: 3
    Letzter Beitrag: 31.07.05, 22:30