.split() aus String?
Mit
String[] words = input.split("\\\\" + c.autoText_Input_Split.getText());
habe ich vor, das eingegebene Zeichen im ganzen String zu entfernen. Quasi von "hallo.1.2.3" zu "hallo123". Damit funktioniert es leider nicht.
Mit
String[] words = autoTextInput.split("\\.");
aber schon. Aber ich möchte mich nicht auf ein "." festsetzen. Wenn man "$" oder "&" rausfiltern möchte, geht das ja nicht.
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.
Lösung für alle Zeichen, aber nur eins:
words = autoTextInput.replace( ""+c.autoText_Input_Split.getText(), "");
Jetzt aber die Lösung :D :
String[] words = autoTextInput.replaceAll("[" + c.autoText_Input_MustSplit.getText() + "]", c.autoText_Input_MustSplitTo.getText());
3 Antworten
Moin,
warum nicht .Replace?
Java String replace() Method (w3schools.com)
string output = input.replace(inputsymbol, "");
LG
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.
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.
Versuche es ggf. so;
String words = autoTextInput.replaceAll(Pattern.quote(c.autoText_Input_Split.getText()), "");
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".
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.
Hey,
hiermit würden alle Zeichen entfernt werden, welche keine Buchstaben oder Zahlen sind:
String s = input.replaceAll("[^\\w\\d]", "");
Mfg Jannick (L1nd)
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.
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.
Stell dir eine Zeichenklasse am besten wie per "oder" verknüpfte Zeichen vor, z.B. [abc] = a|b|c
Habe die Frage ergänzt. 🤔