Saya mencoba menggunakan ini tetapi tidak berhasil-
return value.replaceAll("/[^A-Za-z0-9 ]/", "");
java
regex
non-alphanumeric
Alex Gomes
sumber
sumber
Jawaban:
Gunakan
[^A-Za-z0-9]
.Catatan: menghapus spasi karena itu biasanya tidak dianggap alfanumerik.
sumber
Mencoba
atau
sumber
return value.replaceAll("\\W", "");
Anda harus sadar bahwa
[^a-zA-Z]
akan mengganti karakter yang tidak berada dalam rentang karakter AZ / az. Itu berarti karakter khusus sepertié
,ß
dll. Atau karakter cyrillic dan semacamnya akan dihapus.Jika penggantian karakter ini tidak diinginkan, gunakan kelas karakter yang sudah ditentukan sebelumnya:
PS:
\p{Alnum}
tidak mencapai efek ini, ia bertindak sama seperti[A-Za-z0-9]
.sumber
[^\\p{IsAlphabetic}\\p{IsDigit}]
bekerja dengan baik.{IsDigit}
tidak bekerja untuk saya dan{Digit}
tidak adalah karena saya mencoba ini di Android. Dan Android telahUNICODE_CHARACTER_CLASS
dihidupkan secara default. Terima kasih atas izinnya.Ini akan membuat ruang tetap utuh. Saya berasumsi itu yang Anda inginkan. Jika tidak, hapus spasi dari regex.
sumber
Anda juga dapat mencoba regex sederhana ini:
sumber
str.replaceAll("[^\\p{Alnum}\\s]", "")
\\p{Alnum}\\p{Space}
.Ekspresi reguler Java tidak mengharuskan Anda untuk membuat garis miring (
/
) atau pembatas lainnya di sekitar regex, sebagai lawan dari bahasa lain seperti Perl, misalnya.sumber
Saya membuat metode ini untuk membuat nama file:
sumber
Larutan:
value.replaceAll("[^A-Za-z0-9]", "")
Penjelasan:
Melihat kata kunci sebagai dua fungsi:
[(Pattern)] = match(Pattern)
[^(Pattern)] = notMatch(Pattern)
Terlebih lagi mengenai suatu pola:
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
Oleh karena itu akan mengganti semua char TIDAK termasuk dalam pola
sumber
Jika Anda juga ingin membolehkan karakter alfanumerik yang bukan milik set karakter ascii, seperti misalnya jerman umlaut, Anda dapat mempertimbangkan untuk menggunakan solusi berikut:
Harap perhatikan bahwa penggunaan flag UNICODE_CHARACTER_CLASS dapat berdampak pada penalti kinerja (lihat javadoc dari flag ini)
sumber
Metode sederhana:
sumber
output: ChlamydiasppIgGIgMIgAAbs8006
Github: https://github.com/AlbinViju/Learning/blob/master/StripNonAlphaNumericFromString.java
sumber
Menggunakan Guava Anda dapat dengan mudah menggabungkan berbagai jenis kriteria. Untuk solusi spesifik Anda, Anda dapat menggunakan:
sumber
CharMatcher Guava memberikan solusi ringkas:
sumber