Java, Zeichenkette suchen und bis zu einen bestimmten Zeichen herauskopieren?

2 Antworten

indexHttp = str.indexOf("http");
indexQuotes = str.indexOf('"', indexHttp+1);

indexHttp ist der Index wo das jeweilige Http steht, indexQuotes ist der Index, wo die nächstes Gänsefüßchen stehen.

Einfach einen Substring von indexHttp zu indexQuotes machen und du hast den Link.

Einfach über alle indexHttp eine Schleife machen und so kriegst du alle Links.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Leonad 
Fragesteller
 15.06.2020, 19:14

Jetzt wird mir ein Link ausgegeben. Aber wie muss die Bedingung der while Schleife sein damit sie nicht unendlich läuft?

0
MrAmazing2  15.06.2020, 19:38
@Leonad

Index gibt -1 zurück wenn es keinen gibt. Folglich einfach eine While-Schleife solange Index >=0.

Der ganze Code würde dann ca. so aussehen (hab noch nicht getestet ob er geht) :

int indexHttp = -1;
int indexQuotes =0;
do {  
indexHttp = str.indexOf("http", indexHttp + 1); 
indexQuotes = str.indexOf('"', indexHttp)
// Substring bilden und in ein Array speichern
} while (indexHttp >= 0);
0
Leonad 
Fragesteller
 15.06.2020, 20:25
@MrAmazing2

Noch eine letzte Frage. Die Links werden jetzt Korrekt ausgegeben. Allerdings kommt die Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

Hast du eine Idee wie ich die Verhindern kann?

0
MrAmazing2  15.06.2020, 21:00
@Leonad

das bilden des substrings nur machen wenn indexHttp >= 0.

Also

if(indexHttp >= 0) {
//substring bilden und speichern
}

der Fehler tritt auf weil indexOf beim allerletzten mal immer -1 zurückgibt, und davon natürlich kein Substring gebildet werden kann.

0
Leonad 
Fragesteller
 15.06.2020, 21:17
@MrAmazing2

Jetzt funktioniert alles. Danke für deine Hilfe und Geduld

1