Gegenteil von lastIndexOf?

maxmuster987

Aktives Mitglied
Ich habe eine Text-Datei, die ist folgendermaßen aufgebaut rein schematisch:

Code:
Dreieck: 12.659, 11.14, 1565.98


Wenn ich jetzt die einzelnen Werte automatisiert haben möchte, damit ich diese parsen kann, dann will ich so vorgehen:
Java:
...
line = bufR.readLine();
...
...
int posKomma1 = line.firstIndexOf(',');
int posKomma2 = line.lastIndexOf(',');
double seite1 = Double.parseDouble(line.substring(9,posKomma1));
double seite2 = Double.parseDouble(line.substring(posKomma1+2,posKomma2));
double seite3 = Double.parseDouble(line.substring(posKomma2+2));


lastIndexOf existiert, diese Methode gibt es ja. Aber diese "firstIndexOf" Methode gibt es ja nicht. Gibt es Alternativen, die ich noch nicht kenne?

Ich hätte dann noch eine zusätzliche Frage. Und zwar: Jetzt ist es auf 2 Kommas beschränkt, was ich mit last und firstIndexOf (also falls es First überhaupt gibt in irgendeiner Weise) lösen kann.

Was passiert aber, wenn in der Zeile mehr Kommas stehen, sagen wir mal 5 oder x-beliebige.

Code:
Dreieck: 12.659, 11.14, 1565.98, 10, 11.23, 99.984

Dann kann ich ja logischerweise nicht mehr mit first und last arbeiten, weil die Kommas dazwischen ja nicht beachtet werden. Wie würde ich das dann lösen?
 

maxmuster987

Aktives Mitglied
Dreieck: 12.659, 11.14, 1565.98

Java:
int posKomma1 = line.indexOf(',');
int posKomma2 = line.indexOf(',',posKomma1);

Meinst du das dann so?
Der sucht nach dem zweiten Komma ab posKomma1?

posKomma1 müsste hier in dem Beispiel 15 sein. <- Das ist korrekt mit dem Code hier drüber..
posKomma2 müsste hier in dem Beispiel 22 sein. <- Das ist falsch mit dem Code hier drüber. Da wird mir plötzlich der Wert 15 auch ausgespuckt.


Nachtrag: Ich habe gerade mal einfach
Java:
int posKomma2 = line.indexOf(',',posKomma1+1);

+1 dahinter dran gehängt, nun wird mir auch die 22 ausgespuckt. Ist das tatsächlich so gewollt, dass ich die noch dran hängen muss, weil er sonst direkt das gleiche Komma als "nächstes" Komma sehen würde?!
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Wenn ich jetzt die einzelnen Werte automatisiert haben möchte, damit ich diese parsen kann, dann will ich so vorgehen:
Natürlich kann man über den Index gehen (da bin ich ein großer Freund davon), manchmal reicht es aber auch einfach
Java:
String[] parts = line.split("[:,]\\s");
zu schreiben, um line nach einem Doppelpunkt bzw. Semikolon gefolgt von einem Whitespace aufzuteilen und ein Array der Form
Code:
{ "Dreieck", "12.659", "11.14", "1565.98" }
zu erhalten, dessen Elemente man dann bequem parsen kann.
 

KonradN

Super-Moderator
Mitarbeiter
Ist das tatsächlich so gewollt, dass ich die noch dran hängen muss, weil er sonst direkt das gleiche Komma als "nächstes" Komma sehen würde?!
Die Dokumentation ist ja mit verlinkt worden von mir. Und der Index, ab dem gesucht wird, wird da als zweiten Parameter angegeben. Da Du ja erst ab dem nächsten Zeichen suchen willst, ist der Wert um eins zu erhöhen - also genau so, wie Du es in Deinen Tests dann auch gemacht hast.
 

temi

Top Contributor
Die Dokumentation ist ja mit verlinkt worden von mir. Und der Index, ab dem gesucht wird, wird da als zweiten Parameter angegeben. Da Du ja erst ab dem nächsten Zeichen suchen willst, ist der Wert um eins zu erhöhen - also genau so, wie Du es in Deinen Tests dann auch gemacht hast.
Tja, Doku lesen hilft also wirklich. Wer hätte das gedacht. ;)
 

Ähnliche Java Themen

Neue Themen


Oben