Próbowałem tego użyć, ale nie działało
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
java
regex
non-alphanumeric
Alex Gomes
źródło
źródło
Odpowiedzi:
Zastosowanie
[^A-Za-z0-9]
.Uwaga: usunięto spację, ponieważ zwykle nie jest to uważane za alfanumeryczne.
źródło
Próbować
lub
źródło
return value.replaceAll("\\W", "");
Należy pamiętać, że
[^a-zA-Z]
zastąpi znaki, które nie znajdują się w zakresie znaków AZ / az. Oznacza to, że znaki specjalne podobaé
,ß
itd. Lub cyrylicą i takie będą usuwane.Jeśli zamiana tych znaków nie jest pożądana, użyj zamiast tego wstępnie zdefiniowanych klas znaków:
PS:
\p{Alnum}
nie osiąga tego efektu, działa tak samo jak[A-Za-z0-9]
.źródło
[^\\p{IsAlphabetic}\\p{IsDigit}]
działa dobrze.{IsDigit}
dla mnie nie działa i{Digit}
jest to, że próbuję tego na Androidzie. System Android jestUNICODE_CHARACTER_CLASS
domyślnie włączony. Dzięki za odprawę.Spowoduje to pozostawienie spacji nietkniętych. Zakładam, że tego właśnie chcesz. W przeciwnym razie usuń spację z wyrażenia regularnego.
źródło
Możesz także spróbować tego prostszego wyrażenia regularnego:
źródło
str.replaceAll("[^\\p{Alnum}\\s]", "")
\\p{Alnum}\\p{Space}
.Wyrażenia regularne Java nie wymagają umieszczania ukośnika (
/
) ani żadnego innego ogranicznika wokół wyrażenia regularnego, w przeciwieństwie do innych języków, takich jak na przykład Perl.źródło
Zrobiłem tę metodę tworzenia nazw plików:
źródło
Rozwiązanie:
value.replaceAll("[^A-Za-z0-9]", "")
Wyjaśnienie:
Patrząc na słowo kluczowe jako dwie funkcje:
[(Pattern)] = match(Pattern)
[^(Pattern)] = notMatch(Pattern)
Ponadto w odniesieniu do wzoru:
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
Dlatego zastąpi wszystkie znaki NIE uwzględnione we wzorcu
źródło
Jeśli chcesz również zezwolić na znaki alfanumeryczne, które nie należą do zestawu znaków ascii, jak na przykład niemiecki umlaut, możesz rozważyć użycie następującego rozwiązania:
Pamiętaj, że użycie flagi UNICODE_CHARACTER_CLASS może mieć wpływ na obniżenie wydajności (patrz javadoc tej flagi)
źródło
Prosta metoda:
źródło
wyjście: ChlamydiasppIgGIgMIgAAbs8006
Github: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
źródło
Za pomocą Guawy można łatwo łączyć różne rodzaje kryteriów. Do konkretnego rozwiązania możesz użyć:
źródło
CharMatcher firmy Guava zapewnia zwięzłe rozwiązanie:
źródło