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 1Spró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.