String split()


#25

Der Backslash maskiert ein bereits in Java verwendetes Zeichen.
https://www.java-blog-buch.de/0304-escape-sequenzen/


#26

genauer: wenn nichts zu splitten, dann käme alles in einen String, insgesamt ein Array der Länge 1, ein Element drin,
Zugriff mit Index 0 geht dann auch, Zugriff mit Index 1 nicht mehr


das Split mit \ ; funktioniert übrigens, Semikolon maskiert ist wohl immer noch Semikolon,
wahrscheinlich aber einen String eingelesen der nicht Semikolon enthält, man könnte ja jede der fünf eingelesenen Zeilen vor dem Split ausgeben
(System.out.println() ist und bleibt der wichtigste Sache überhaupt…)


ist ziemlich unnötiger Code, einerseits Festlegung auf bestimmte Anzahl, naja, wird hier nicht variabel sein, aber grundsätzlich könnte man auch array.length verwenden

und wenn schon ein Array fertig, muss man nicht in andere gleichen Inhalt kopieren,
das String[] von split ist nicht schlechter als in deinem 2D-Array,
zum_testen[i] = temp_Array;
bzw. gleich zum_testen[i] = test.split("\;");
geht auch

beim Anlegen wäre dann sparsamer:
zum_testen1 = new String[5][];

die internen String[] noch alle null, aber das sind kleine Details

freilich würdest du dann nicht bemerken wenn es weniger als 5 Elemente sind, so wie aktuell der Fehler,
dafür hilft dein Kopiercode, oder ein einfaches Testen der Länge

warum nicht 5 Elemente ist an Inhalt der Datei, eingelesenen String zu prüfen, am split mit \ ; liegt es nicht


#27

Hallo nochmals,

der Grund warum ich das zweite Array verwendet habe:

for(int j=0; j<=4; j++){
  zum_testen1[i][j] = temp_Array[j];
}

ist der, dass folgender Code nicht funktioniert:

String temp_Array[][] = test.split("\\;");.

Nur mal nebenbei erwähnt.

Das mit “;” funktioniert nicht, bekomme sofort einen Fehler es funktioniert also nur mit “\;”.

Dadurch, das ich nur ein Eindimensionales-Array verwende wird folgender text im txt-file:

Zeile1:Test;Test;Test;Test;Test;
Zeile2: Test1;Test1;Test1;Test1;Test1;

in das Array[0] hineingeschrieben -> Test;Test;Test;Test;Test;
in Array[1] steht dann -> Test1;Test1;Test1;Test1;Test1;
usw.

Ich möchte aber, das war auch der Grund warum ich ein zusätzliches Array verwendet habe, dass
im ersten Feld des Arrays -> Array[0][0] -> Test steht. Im zweiten dann: Array[0][1] -> Test usw.
In Array[1][0] -> dann die nächste Zeile mit -> Test1 usw.

Das heißt, das aufsplitten mit “String temp_Array[] = test.split(”\;");" funktioniert nicht so, das jedes Wort (z.B. Test)
in einem eigenen Feld des Array steht.

Eigentlich sollte es aber so sein?

SG


#28

Da wäre der Fehler interessant der mit split(";") kommt


#29

kann natürlich nicht funktionieren, split liefert ein 1D-Array,
wie gesagt wäre aber in ein 2D-Array

String[][] temp_Array = new String[5][];
temp_Array[0] = test.split("\;");

möglich

der Rest ist recht unklar, wie schon angesprochen wurde fraglich warum dass split(";"); nicht funktionieren sollte usw.,
wobei natürlich hier auch das Forum manche \ und ähnliches aus Text herauszaubern kann, unberechenbar störend

mit Einlesen aus Datei machst du es es zusätzlich kompliziert, unklar was in deiner Datei steht, wie eingelesen usw., also über gegebenen Quellcode hinaus Probleme mit Zeilenumbruch je nach Betriebssystem und Datei vorstellbar,

wäre ganz gut wenn du allein als einen Schritt
Datei -> 1D-String[] von Zeilen baust, ohne jedes Split,
wenn das geht und Ergebnis nachprüfbar, dann gut,


Fragen zu split selber besser ohne jede Beteiligung von Dateien hier stellen, falls Bedarf,
mit einem String[] fest vorgegebener Strings im Quellcode zu testen, falls nicht schon ein einzelner String, eine Zeile, ausreicht,
so dass jeder den Code kopieren und es bei sich ausprobieren kann,


wenn du es hinbekommt, Test-String[] aus Quellcode zu splitten,
dann sollte es auch mit Datei-Einlesen funktionieren,
aber ok, jede Kombination funktionierender Dinge kann auch noch paar neue Probleme haben

nur das bitte frühestens besprechen wenn keine Fragen mehr zu split ; oder \; usw.


#30

Hallo zusammen,

sorry für die späte Antwort.

Habe momentan sehr viel zu tun.

Nun funktioniert alles!
Mein Fehler war, das ich bei einem zweiten Array die falshe größe angegeben habe.
Dadurch hatte ich ständig den Fehler.

Wie bereits erwähnt, mit; “split(”\;");" funktioniert alles wunderbar.
Mit: “split(”;");" kommt folgende Fehlermeldung: Invalid escape sequence. Valid ones are \t, \n usw.
Also immer “split(”\;"); verwenden, dann funktioniert es auch.

Danke für die Hilfe!