Die split Methode

Mnemosine

Grünschnabel
Hallo

Wäre jemand bitte so nett mir zu erklären, wie genau die Splitanweisung Funktioniert? Bei mir sagt er immer er erkennt den Code nicht.

Danke im voraus
 
Es müsste also folgendermaßen lauten:
Java:
String tutorials = "www.tutorials.de";

String[] splittArray = tutorials.split("\\.");

Ergebnis:

splittArray[0] = "www";
splittArray[1] = "tutorials";
splittArray[2] = "de";
 
\\. hieß ja das immer bei einem punkt getrennt wird. aber was bedeutet nur \\ und wenn noch was mit plus drangehängt wird, wird dann wenn das eine ODER das andere ist aufgeteilt oder wenn das eine UND das andere ist.?

hier ein kurzer auszug als beispiel:

Java:
return metadataKeysString.split("\\" + METADATA_KEYS_SEPARATOR);

public static final char METADATA_KEYS_SEPARATOR = '|';
 
\\ entspricht in einem Java-String dem einfachen \

Grund:
Ein einfacher Backslash \ ist ein Steuerzeichen für sogenannte Escape-Sequenzen wie \n, \r, \t, etc.
Um also einen einfachen Backslash \ in einem Java-String darzustellen, muss man ihn mit einem vorangestellten \ "escapen", also \\ schreiben.

Wenn du zwei Strings mit + verknüpfst, wird weder eine UND- noch eine ODER-Operation ausgeführt, sie werden lediglich aneinandergehängt:

Code:
String a = "a";
String b = "b";
String c = a + b;  // -> c = "ab"

Willst du also deine Metadaten bei jeden | aufsplitten, musst du lediglich

Code:
s.split("|");
bzw. in deinem konkreten Fall
Code:
metadataKeysString.split(METADATA_KEYS_SEPARATOR);

schreiben.
 
das problem ist das ich einen vorgebenen Code habe, den ich verstehen muss, und der ist eben so:

Code:
return metadataKeysString.split("\\" + METADATA_KEYS_SEPARATOR);

ich muss ein plugin schreiben und diese klasse, die diesen Code enthält brauche ich. des weiteren muss ich das aber weiter entwicklen, weil diese klasse (die jemand anderes geschrieben hat) nicht alles erfüllt was ich brauche. Dazu muss ich aber natürlich verstehen was diese Klasse tut. Naja und es hakt eigentlich nur noch an diesem einen Ding (was ja eigentlich gar nicht schwer ist aber irgendwie...^^)

naja und meine frage war jetzt eben, ob der code da oben bedeutet das immer bei einem von beiden aufgesplittet wird, oder wie ich mir das vorzustellen hab.

und danke, an die Sache mit \\ = \ hab ich überhaupt nicht mehr drangedacht *schäm*
 
Zuletzt bearbeitet:
METADATA_KEYS_SEPARATOR dürfte eine Konstante sein die irgendwo innerhalb deiner Klasse oder auch Projekts deklariert ist. Der Inhalt der Konstante wird mit "\\" verkettet und gesplittet wird somit bei jedem Vorkommen von "\\{Inhalt von METADATA_KEYS_SEPARATOR}"
 
public static final char METADATA_KEYS_SEPARATOR = '|';

,-) ich wollte es nicht nochmal posten, da es 2 post weiter oben bereits stand

also wenn ich das richtig verstehe wird bei ' \| ' gesplittet? man könnte also theoretisch auch schreiben

Code:
return metadataKeysString.split("\\|");

um das gleiche ergebnis zu erhalten?

und ich denk mir hier wunder was ,-) danke für eure hilfe!
 
habe auch eine frage zur splitt methode:

habe ein projekt in dem verwende ich sie folgenderweise (jre sysrem library javase-1.6)
String[] splittArray = result.split(":"); und sie funktioniert auch einwandfrei

im anderen projekt (jre sysrem library cdc-1.0/foundation-1.0)
bringt er beim combilieren keine fehlermeldung, wenn der Code aber abgelaufen werden soll bleibt er einfach an der splitt-methode hängen --ohne fehlermeldung--
selbst wenn ich wie oben beschrieben die splitt methode so verwende String[] splittArray = result.split("\\:");

woran kann dies liegen an den unterschiedlichen system libraries ? und wenn ja wie verwende ich dann die splitt-methode
 
Auch wenn die Antwort etwas spät kommt, die Nachwelt interessiert es vielleicht:
public static final char METADATA_KEYS_SEPARATOR = '|';

,-) ich wollte es nicht nochmal posten, da es 2 post weiter oben bereits stand

also wenn ich das richtig verstehe wird bei ' \| ' gesplittet?
Nein! Das Pipe-Zeichen ist in regulären Ausdrücken ein Steuerzeichen (für eine Alternative). Wenn man ein Steuerzeichen als normales Zeichen verwenden will, muss man es erst „escapen“, also ein „\“ voranstellen. Der reguläre Ausdruck „\|“ erkennt also das Zeichen „|“. In Zeichenkettenliteralen muss ein einzelnes „\“ als „\\“ notiert werden, deshalb wird daraus insgesamt "\\|". Aber das wurde ja weiter oben schon erwähnt.

man könnte also theoretisch auch schreiben

Code:
return metadataKeysString.split("\\|");
Das wiederum ist richtig.


habe ein projekt in dem verwende ich sie folgenderweise (jre sysrem library javase-1.6)
String[] splittArray = result.split(":"); und sie funktioniert auch einwandfrei

im anderen projekt (jre sysrem library cdc-1.0/foundation-1.0)
bringt er beim combilieren keine fehlermeldung, wenn der Code aber abgelaufen werden soll bleibt er einfach an der splitt-methode hängen --ohne fehlermeldung--
selbst wenn ich wie oben beschrieben die splitt methode so verwende String[] splittArray = result.split("\\:");

woran kann dies liegen an den unterschiedlichen system libraries ? und wenn ja wie verwende ich dann die splitt-methode
Ja. Bei CDC gibt es keine Methode split. Wenn beim Kompilieren diesbezüglich keine Fehlermeldung auftrat, machst du irgendetwas falsch.

Grüße,
Matthias
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück