/ / java zamień tylko na regex a-z0-9 - java, regex

java zastępuje tylko regex a-z0-9 - java, regex

Chciałbym tylko pokazać a-z0-9 w ciągu znaków, a pozostałe znaki powinny zostać zastąpione ciągiem zerowym

String s=this.saveFileName.replaceAll("/[a-z0-9. ]/", "");

To nie działa, jakieś pomysły, dlaczego?

Odpowiedzi:

13 dla odpowiedzi nr 1

Spróbuj tego:

String s = "abc123ABC!@#$%^;"xyz";
String newString = s.replaceAll("[^a-z0-9]", "");
//newString is now "abc123xyz"

Wykorzystuje to operację negacji (^) w klasach znaków, która zasadniczo mówi "dopasuj wszystko z wyjątkiem następujących znaków".

Ponadto nie potrzebujesz ukośników podczas definiowania wyrażeń regularnych Java.


2 dla odpowiedzi nr 2

Nie potrzebujesz tego / /.

Niektóre języki, takie jak PHP, oczekują umieszczenia wyrażenia regularnego między separatorami, Java tego nie robi.

Ponieważ chcesz zastąpić wszystko inne niż a-z0-9 potrzebujesz wyrażeń regularnych [^a-z0-9] lub alternatywnie [^a-z\d]

ZA [..] jest klasą char, która pasuje do znaku w niej wymienionego. Klasa char może również zawierać zakresy jak [a-z] który pasuje do jednej małej litery. Teraz a ^ na początku klasy char neguje to, więc [^a-z] pasuje do dowolnego znaku inny niż mała litera.


1 dla odpowiedzi nr 3

Czy próbowałeś tego bez // znaki?

String s=this.saveFileName.replaceAll("[^a-z0-9]", "");

0 dla odpowiedzi nr 4

To wyrażeń wydaje się działać lewy:

String s="Testing-1.2.3_$".replaceAll("[^a-z0-9. ]", "");

wyjście:

esting1.2.3

symbol ^ neguje zestaw, a ukośniki nie są potrzebne.