Angel Arts: Kleines Problem mit arrays und indesOf! HILFE!!! :)

Hi Leute! Ich habe da mal ein ( mehr oder weniger ) schweres Problem!

Ich habe einen Text wie z.B " rot.jpg,0,weiss.jpg,,rot.jpg ...."

Ich will nun aus diesem "text" ( 360 Wörter) mit indexOf in Arrays packen

Ich habe geschreiben:

private static String exporter(String s) {
      int indexKomma;
      int i=1;
      String ausschnitt = "";
      indexKomma = s.indexOf(",");
         if(indexKomma >= 0) {
            ausschnitt = s.substring(0, indexKomma);
            return ausschnitt;

}
            return "0";
      }

Wenn ich das durchlaufen lasse gibt er mir immer nur rot.jpg zurück!
Ich will in:
Array[0] = "rot.jpg"
Array[1] = "0"
Array[2] = "weiss.jpg"
Array[3] = ""
array[4] = "rot.jpg"    ( also alles aus dem text )

was muss ich tun ( oder schreiben ) das exporter(s) nicht immer nur rot.jpg wieder gibt?

Ich hoffe ihr versteht meine Frage und Problem   :D

thx im Vorraus für eure Hilfe!

  1. Ich würd die Klasse StringTokenizer zu Rate ziehen...;-)

    1. das Problem ist ja nur das ich mit indexOf(",") das erste Komma im text suchen will und das Wort davor in ein array gepackt wird!  das export(string s)ist nur der Name der Methode ! Ich die Methode funktioniert auch aber er fängt immer wieder von vorne an !  Immer bis zum ersten Komma , dann gucklt er ab das zeichen davor ein wert hat ( bei rot.jpg währe es also das g) ! wenn es ein Wert hat sucht es die nächste stelle ( d ) dann (j)  dann (.)  halt solange bis nach   gpj.tor  ( also rot.jpg ) kein zeichen kommt und er es als "ausschnitt" wieder gibt!   jetzt soll er eigentlich weiter suchen und nicht von vorne anfangen!

      1. Hallo,

        Wie wäre folgendes

        String s = new String("hier,wird,dann,getrennt")

        public [] String trennen(String s){
          int n = 0;
          //ermitteln, wie viele teilstrings entstehen werden
          for (int i = 0; i < s.length(); i++}
            if(s.charAt[i] = ','){
              n = n+1;
            }
          }
          //array der mit grösse = anz. teilstrings erzeugen
          String [] res = new String[n+1];
          res = s.split(,);
          return res;
        }

        Geht sicher auch noch einfacher....

        gruss

        1. *wein*  geht immernoch nicht!  Aknnst du mir den irgentwie sagen was ich den machen muss damit die Methode die das Komma sucht ( indexOf ) nicht immerwieder von vorn beginnt?

          1. Hallo!

            Aknnst du mir den irgentwie sagen was ich den machen muss damit die Methode die das Komma sucht ( indexOf ) nicht immerwieder von vorn beginnt?

            Die Methode indexOf() unterstützt auch 2 Parameter: indexOf(int sucheAb, int sucheBis). Wenn Du pro Durchgang den Integer sucheAb entsprechen erhöhst, sollte es funktionieren.

            Dennoch möchte ich Dich nochmal auf die Methode String.split() hinweisen, die Dir anhand eines Trennzeichens einen String zerlegt und direkt einen String-Array zurückliefert:

            String suchString = "a,b,c,d";
            String[] result = suchString.split(",");
            for(int i=0, n=result.length; i<n; i++)
               System.out.println(result[i]);

            Alternativ kannst Du auch einen (hier etwas überdimensionierten) java.util.StringTokenizer verwenden:

            String suchString = "a,b,c,d";
            int counter = 0;
            StringTokenizer st = new StringTokenizer(suchString, ",");
            String[] result = new String[st.countTokens()];
            while(st.hasMoreTokens())
               result[counter++] = st.nextToken();
            for(int i=0, n=result.length; i<n; i++)
               System.out.println(result[i]);

            Habe beides getestet, funktioniert einwandfrei.

            Oliver

            --
            Stillstand ist der Tod.
            1. Moin!

              Dennoch möchte ich Dich nochmal auf die Methode String.split() hinweisen, die Dir anhand eines Trennzeichens einen String zerlegt und direkt einen String-Array zurückliefert:

              Tja, das hatte ich ja schon vor 5 Stunden versucht, aber auf mich hört ja keiner. Ob das auf meine nichtvorhandene Erfahrung mit Java zurückzuführen ist, kann ich nicht sagen. :)

              - Sven Rautenberg

              --
              "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
              1. Sorry Jund aber ich habe es mal so gemacht da ich den anfangswert vom sibstring ( bei mir ist das int i; ) einfach nach jeder prozedur i++; gemacht habe:

                private static String exporter(String s) {
                      int indexKomma;
                      int i=0;
                      String ausschnitt = "";
                      indexKomma = s.indexOf(",");
                         if(indexKomma >= 0) {
                         ausschnitt = s.substring(i, indexKomma);
                         i++;
                         return ausschnitt;

                }
                         return "0";
                   }

                er gibt mir trozdem immer rot.jpg rot.jpg rot.jpg wieder

                könnt ihr mir das obere so schreiben das es funz?  :) *frech sag*

                1. Hallo!

                  Liest Du eigentlich auch die Antworten, die die hier gegeben werden?

                  Sorry Jund aber ich habe es mal so gemacht da ich den anfangswert vom sibstring ( bei mir ist das int i; ) einfach nach jeder prozedur i++; gemacht habe:

                  Geh doch mal in Gedanken oder besser noch auf dem Papier durch, was da vor sich geht. Dann erkennst Du auch, warum Deine Lösung nicht funktionieren kann.

                  könnt ihr mir das obere so schreiben das es funz?  :) *frech sag*

                  Nein. Ich habe Dir schon einen Einzeiler gepostet, der prima funktioniert.

                  Oliver

                  --
                  Man kann sein Leben weder verlaengern, noch verbreitern - nur vertiefen.
            2. Hallo!

              Die Methode indexOf() unterstützt auch 2 Parameter: indexOf(int sucheAb, int sucheBis). Wenn Du pro Durchgang den Integer sucheAb entsprechen erhöhst, sollte es funktionieren.

              Sorry, ich war in Gedanken bei String.substring(int von, int bis). String.indexOf(String gesuchterString, int sucheAb) wäre hier das richtige.

              Oliver

              --
              Es gibt drei Moeglichkeiten, eine Firma zu ruinieren: Mit Spielen, das ist am lustigsten. Mit Frauen, das ist am schoensten. Mit Computern, das ist am sichersten.
  2. Moin!

    Ich will nun aus diesem "text" ( 360 Wörter) mit indexOf in Arrays packen

    Ich will in:
    Array[0] = "rot.jpg"
    Array[1] = "0"
    Array[2] = "weiss.jpg"
    Array[3] = ""
    array[4] = "rot.jpg"    ( also alles aus dem text )

    Entschuldige meine Ignoranz, aber gibts in Java nicht auch sowas wie "split()" oder "explode()", halt eine Methode, welche ein Trennzeichen entgegennimmt, und den String an diesen Zeichen in Arrayelemente zerhackt? Sagt mir zumindest Google: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)