Kleines Problem mit arrays und indesOf! HILFE!!! :)
Angel Arts
- java
0 Danfix0 Sven Rautenberg
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!
Ich würd die Klasse StringTokenizer zu Rate ziehen...;-)
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!
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
*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?
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
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
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*
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
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
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