Ich habe es versucht, aber es hat nicht funktioniert.
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
java
regex
non-alphanumeric
Alex Gomes
quelle
quelle
Antworten:
Verwenden Sie
[^A-Za-z0-9]
.Hinweis: Der Leerzeichen wurde entfernt, da dies normalerweise nicht als alphanumerisch angesehen wird.
quelle
Versuchen
oder
quelle
return value.replaceAll("\\W", "");
Sie sollten sich bewusst sein, dass
[^a-zA-Z]
Zeichen ersetzt werden, die sich nicht selbst im Zeichenbereich AZ / az befinden. Das bedeutet , dass Sonderzeichen wieé
,ß
usw. oder kyrillische Zeichen und so wird entfernt.Wenn das Ersetzen dieser Zeichen nicht gewünscht ist, verwenden Sie stattdessen vordefinierte Zeichenklassen:
PS:
\p{Alnum}
Erreicht diesen Effekt nicht, er verhält sich genauso wie[A-Za-z0-9]
.quelle
[^\\p{IsAlphabetic}\\p{IsDigit}]
funktioniert gut.{IsDigit}
funktioniert bei mir nicht und{Digit}
ist, dass ich dies auf Android versuche. Und Android istUNICODE_CHARACTER_CLASS
standardmäßig aktiviert. Vielen Dank für die Freigabe.Dies wird verlassen Räume intakt. Ich nehme an, das ist was du willst. Entfernen Sie andernfalls das Leerzeichen aus dem regulären Ausdruck.
quelle
Sie können auch diesen einfacheren regulären Ausdruck ausprobieren:
quelle
str.replaceAll("[^\\p{Alnum}\\s]", "")
\\p{Alnum}\\p{Space}
.Bei den regulären Ausdrücken von Java müssen Sie
/
im Gegensatz zu anderen Sprachen wie beispielsweise Perl keinen Schrägstrich ( ) oder ein anderes Trennzeichen um den regulären Ausdruck setzen .quelle
Ich habe diese Methode zum Erstellen von Dateinamen erstellt:
quelle
Lösung:
value.replaceAll("[^A-Za-z0-9]", "")
Erläuterung:
Betrachten Sie das Schlüsselwort als zwei Funktionen:
[(Pattern)] = match(Pattern)
[^(Pattern)] = notMatch(Pattern)
Darüber hinaus in Bezug auf ein Muster:
A-Z = all characters included from A to Z
a-z = all characters included from a to z
0=9 = all characters included from 0 to 9
Daher werden alle Zeichen ersetzt, die NICHT im Muster enthalten sind
quelle
Wenn Sie auch alphanumerische Zeichen zulassen möchten, die nicht zum ASCII-Zeichensatz gehören, wie z. B. deutsche Umlaute, können Sie die folgende Lösung in Betracht ziehen:
Bitte beachten Sie, dass die Verwendung des UNICODE_CHARACTER_CLASS-Flags die Leistungseinbußen beeinträchtigen kann (siehe Javadoc dieses Flags).
quelle
Einfache Methode:
quelle
Ausgabe: ChlamydiasppIgGIgMIgAAbs8006
Github: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
quelle
Mit Guava können Sie problemlos verschiedene Arten von Kriterien kombinieren. Für Ihre spezifische Lösung können Sie Folgendes verwenden:
quelle
Der CharMatcher von Guava bietet eine präzise Lösung:
quelle