.split() aus String?


07.06.2022, 14:53

Ich habe gerade etwas anderes ausprobiert, womit man alle Zeichen entfernen kann, wie man gerade Lust hat:

String[] words;
try {
    words = autoTextInput.split("[" + c.autoText_Input_Split.getText() + "]");
} catch (PatternSyntaxException pse) {
    System.out.println("Geht nix");
}

Wobei "[" nicht funktioniert.


07.06.2022, 14:58

Lösung für alle Zeichen, aber nur eins:

words = autoTextInput.replace( ""+c.autoText_Input_Split.getText(), "");

07.06.2022, 20:43

Jetzt aber die Lösung :D :

String[] words = autoTextInput.replaceAll("[" + c.autoText_Input_MustSplit.getText() + "]", c.autoText_Input_MustSplitTo.getText());

3 Antworten

Von Experte JanMarcel01 bestätigt

Moin,

warum nicht .Replace?

Java String replace() Method (w3schools.com)

string output = input.replace(inputsymbol, "");

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
verreisterNutzer  07.06.2022, 14:53

Habe die Frage ergänzt. 🤔

0
verreisterNutzer  07.06.2022, 15:08
@Dultus, UserMod Light

Ja, aber nur für einzelne Zeichen. Ich möchte jedoch alle Zeichen, die man eingibt, entfernen lasse. Das funktioniert auch mit

String[] words = autoTextInput.split("[" + c.autoText_Input_Split.getText() + "]");

, aber "[" löst dann:

java.util.regex.PatternSyntaxException: Unclosed character class near index 2
[[]
  ^

aus.

0
verreisterNutzer  07.06.2022, 15:11
@Dultus, UserMod Light
String words = autoTextInput.replaceAll(c.autoText_Input_Split.getText(), "");

löst ebenfalls

java.util.regex.PatternSyntaxException: Unclosed character class near index 1
[]
 ^

aus, wenn ich "[" eingebe.

0
verreisterNutzer  07.06.2022, 15:22
@Dultus, UserMod Light

Das funktioniert diesmal ohne Fehler, jedoch wird nichts mehr aus dem String entfernt, wenn ein 2. Zeichen dazukommt.

Mit

String[] words = autoTextInput.split("[" + c.autoText_Input_Split.getText() + "]");

komme ich bisher am weitesten. Ich gebe ich das TextField z. B. einfach "asldfj" ein und all diese Zeichen werden aus dem ganzen String entfernt - außer eben "[". :/

Beispiel:

Input: "kuiF(/[[[Z(]]]]]]]=PÄüpe43kuiF(/[[[Z()=PÄüpe43"

TextField: "ÄPZkuiü()."

Output: "F/[[[]]]]]]]=pe43F/[[[=pe43".

0
verreisterNutzer  07.06.2022, 17:38
@Dultus, UserMod Light

Ich habe es nun mit

String[] words = autoTextInput.replaceAll("[" + c.autoText_Input_MustSplit.getText() + "(HIER MUSS DAS LEERZEICHEN WOHL WEGBLEIBEN, DA SONST LEERZEICHEN NICHT MITGENOMMEN WERDEN).]", c.autoText_Input_MustSplitTo.getText());

ausprobiert (von hier) und alle Zeichen können somit beliebig durch andere Zeichen ersetzt werden.

0

Hey,

hiermit würden alle Zeichen entfernt werden, welche keine Buchstaben oder Zahlen sind:

String s = input.replaceAll("[^\\w\\d]", "");

Mfg Jannick (L1nd)

Woher ich das weiß:eigene Erfahrung
verreisterNutzer  07.06.2022, 15:13

Fyi: \d in [^\w\d] ist redundant da \d bereits in \w enthalten ist. [^\w] oder \W (groß geschrieben) wäre genug für alle non-word characters.

1

Am besten per replace() und du kannst mehrere Zeichen in einer sog. Zeichenklasse zusammenfassen.

Hier ein Beispiel: Alle . $ & Zeichen entfernen

str = str.replace(/[.$&]/g,'');

Manche Zeichen haben innerhalb des regulären Ausdrückes eine spezielle Funktion und müssen escaped werden, wenn man diese im Text finden möchte. Innerhalb einer Zeichenklasse ist das etwas bequemer, lediglich der Bindestrich gibt dort eine sog. range an und müsste per Backslash escaped werden, sowie eckige Klammern selbst.

Woher ich das weiß:eigene Erfahrung