können Sie \p{L}
anstelle von a-zA-Z
:
string = string.replaceAll("[^-_/.,\\p{L}0-9 ]+","");
Die \p{L}
Matches alle Unicode-Zeichen, unabhängig von Modifikatoren auf die regex Kompilieren übergeben.
Siehe ein Java test:
List<String> strs = Arrays.asList("[email protected]#Łąka$%^", "Word123-)(=+");
for (String str : strs)
System.out.println("\"" + str.replaceAll("[^-_/.,\\p{L}0-9 ]+","") + "\"");
Ausgang:
"Łąka"
"Word123-"
Muster Details: das [^-_/.,\\p{L}0-9 ]+
Muster paßt zu jedem Char andere als -
, _
, _
, /
, .
, ,
, Unicode Buchstabe, ASCII-Ziffer und ein Leerzeichen.
Beachten Sie, dass Sie mit dieser Lösung weiterhin Unicode-Ziffern wie ٠١٢٣٤٥٦٧٨٩
entfernen.
können Sie Mena's suggested verwenden \p{Alnum}
aber mit (?U)
embedded flag option Spiel alle Unicode-Buchstaben und Ziffern reall:
string = string.replaceAll("(?U)[^-_/.,\\p{Alnum} ]+","");
Um nur Unicode Buchstaben andere als gemeinsame europäische Buchstaben zu entfernen, nur À-ÿ
addieren und subtrahieren zwei nicht-Buchstaben , ×÷
, aus diesem Bereich:
string = string.replaceAll("(?U)[^-_/.,A-Za-zÀ-ÿ &&[^×÷]]+","");
Möchten Sie nur bestimmte Zeichenmarken zulassen? Wie nur ñ/Ñ, oder alle Akzente, einschließlich äöüèéâ und dergleichen? – Felk
Ja, nur das ... Ich will nicht andere Zeichen wie portugues, französisch, etc .. – Faabass
Sie "nichts akzeptieren" oder "bekommen" mit 'replaceAll (" ... "," ") 'Sie" entfernen "die Zeichen. Was müssen Sie entfernen? Geben Sie ein Beispiel an. Was ist die erwartete Ausgabe für '" łąka123! @ # $%^& *() _ + "'? –