Java: String nicht splitten wenn Zeichen innerhalb anderer Zeichen ist?


29.08.2021, 16:14
Diese Datei sieht so aus:

An dieser Stelle meinte ich den Inhalt der Datei

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du kannst als zweiten Parameter ein Limit angeben. Dann wird der String nur beim ersten IstGleich gesplittet.

.split("=", 2);

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
name123454321 
Fragesteller
 29.08.2021, 16:27

Ok das wuste ich noch garnicht, ich probiere es jezt aus

1
name123454321 
Fragesteller
 29.08.2021, 16:29

Mein Programm crasht dabei leider mit der Meldung:

java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
0

Bei mir hat dieser Regex am besten funktioniert:

input.split("=?\"\\R?");

Also der String wird nicht beim Gleich-Zeichen, sondern bei Anführungszeichen mit einem optionalen führenden Gleich-Zeichen und einem optionalen nachfolgenden Zeilenumbruch getrennt.

Aus dem:

abc="1+2=3"
def="4+5=9"
ghi="10+11=21"

wird das:

[abc, 1+2=3, def, 4+5=9, ghi, 10+11=21]

Wichtig ist dabei halt, dass das Anführungszeichen direkt nach dem Gleich kommt.

Du kannst dafür einen Regex verwenden, der sowohl das Gleichheitszeichen als auch den Zeilenumbruch matcht.

String[] arr = "abc=\"test1\"\nabcd=\"test2\"".split("[=\\n]");

(Gutefrage formatiert hier die Backslashes ein wenig falsch. Dies ist der eigentliche Regex: [=\\n])

In arr ist dann folgendes enthalten:

[abc, "test1", abcd, "test2"]
Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung