Tergantung apa yang Anda maksud. Jika Anda hanya ingin menyingkirkannya, lakukan ini: (Perbarui: Tampaknya Anda juga ingin menyimpan angka, gunakan baris kedua dalam kasus itu)
ketika saya menggunakan fungsi ini, itu juga menghapus semua angka. tetapi saya tidak ingin nomor dihapus. hanya ingin menghapus karakter khusus. Tolong sarankan sesuatu ..
Tanu
baik Anda bilang Anda hanya menginginkan alfabet. Tapi saya akan memperbarui jawaban saya sebentar lagi
Sean Patrick Floyd
Saya ingin menggabungkan string tetapi dengan beberapa kondisi seperti 1. Jika hanya ada satu hasil, tidak diperlukan concat 2. Jika hasilnya lebih dari 1 dari string concat dalam contoh bentuk berikut: stack + over + flow
Tanu
2
@Tanu itu pertanyaan yang berbeda. Buat yang baru
Pekka
Bagaimana jika saya tidak ingin spasi dihapus? atau mengatakan semua spasi seperti tab, baris baru diciutkan hanya sebagai satu spasi?
terkutuk pada
74
Saya menggunakan ini.
s = s.replaceAll("\\W", "");
Ini menggantikan semua karakter khusus dari string.
Di sini semua karakter khusus kecuali spasi, koma, dan ampersand diganti. Anda juga dapat menghilangkan spasi, koma, dan ampersand dengan ekspresi reguler berikut.
Anda dapat menggunakan ekspresi reguler dasar pada string untuk menemukan semua karakter khusus atau menggunakan kelas pola dan pencocokan untuk mencari / mengubah / menghapus string yang ditentukan pengguna. Tautan ini memiliki beberapa contoh ekspresi reguler yang sederhana dan mudah dipahami: http://www.vogella.de/articles/JavaRegularExpressions/article.html
Anda bisa mendapatkan unicode untuk karakter sampah itu dari alat charactermap di jendela pc dan menambahkan \ u eg \ u00a9 untuk simbol hak cipta. Sekarang Anda dapat menggunakan string itu dengan karakter sampah tertentu, jangan hapus karakter sampah apa pun tetapi ganti dengan unicode yang tepat.
saya sarankan Anda menambahkan catatan di bagian jawaban Anda untuk menjelaskan kode Anda. Silakan baca lebih lanjut tentang bagaimana menulis jawaban yang baik .
Joe Ferndz
Ini tidak benar-benar menjawab pertanyaan itu. Jika Anda memiliki pertanyaan yang berbeda, Anda dapat menanyakannya dengan mengklik Ajukan Pertanyaan . Anda juga dapat menambahkan hadiah untuk menarik lebih banyak perhatian pada pertanyaan ini setelah Anda memiliki reputasi yang cukup . - Dari Ulasan
Jawaban:
Tergantung apa yang Anda maksud. Jika Anda hanya ingin menyingkirkannya, lakukan ini:
(Perbarui: Tampaknya Anda juga ingin menyimpan angka, gunakan baris kedua dalam kasus itu)
String alphaOnly = input.replaceAll("[^a-zA-Z]+",""); String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
atau yang setara:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+",""); String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(Semua ini dapat ditingkatkan secara signifikan dengan mengkompilasi pola regex dan menyimpannya dalam konstanta)
Atau, dengan Jambu Biji :
private static final CharMatcher ALNUM = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.inRange('0', '9')).precomputed(); // ... String alphaAndDigits = ALNUM.retainFrom(input);
Tetapi jika Anda ingin mengubah karakter beraksen menjadi sesuatu yang masuk akal yang masih ascii, lihat pertanyaan berikut:
sumber
Saya menggunakan ini.
s = s.replaceAll("\\W", "");
Ini menggantikan semua karakter khusus dari string.
Sini
\ w: Karakter kata, kependekan dari [a-zA-Z_0-9]
\ W: Karakter non-kata
sumber
Anda dapat menggunakan metode berikut untuk menyimpan karakter alfanumerik.
replaceAll("[^a-zA-Z0-9]", "");
Dan jika Anda hanya ingin menyimpan karakter alfabet, gunakan ini
replaceAll("[^a-zA-Z]", "");
sumber
replaceAll("[^a-zA-Z0-9 ]", "");
Ganti karakter khusus dengan
replaceAll("\\your special character","new character");
mis .: untuk mengganti semua kemunculan * dengan spasi
replaceAll("\\*","");
* Pernyataan ini hanya dapat menggantikan satu jenis karakter khusus dalam satu waktu
sumber
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
Di sini semua karakter khusus kecuali spasi, koma, dan ampersand diganti. Anda juga dapat menghilangkan spasi, koma, dan ampersand dengan ekspresi reguler berikut.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Dimana Input adalah string yang perlu kita ganti karakternya.
sumber
Mengikuti contoh jawaban Andrzej Doyle , saya pikir solusi yang lebih baik adalah menggunakan
org.apache.commons.lang3.StringUtils.stripAccents()
:package bla.bla.utility; import org.apache.commons.lang3.StringUtils; public class UriUtility { public static String normalizeUri(String s) { String r = StringUtils.stripAccents(s); r = r.replace(" ", "_"); r = r.replaceAll("[^\\.A-Za-z0-9_]", ""); return r; } }
sumber
Anda dapat menggunakan ekspresi reguler dasar pada string untuk menemukan semua karakter khusus atau menggunakan kelas pola dan pencocokan untuk mencari / mengubah / menghapus string yang ditentukan pengguna. Tautan ini memiliki beberapa contoh ekspresi reguler yang sederhana dan mudah dipahami: http://www.vogella.de/articles/JavaRegularExpressions/article.html
sumber
Anda bisa mendapatkan unicode untuk karakter sampah itu dari alat charactermap di jendela pc dan menambahkan \ u eg \ u00a9 untuk simbol hak cipta. Sekarang Anda dapat menggunakan string itu dengan karakter sampah tertentu, jangan hapus karakter sampah apa pun tetapi ganti dengan unicode yang tepat.
sumber
Untuk spasi, gunakan pola ini "[^ az AZ 0-9]"
sumber
let name = name.replace(/[&\/\\#,+()$~%!.„'":*‚^_¤?<>|@ª{«»§}©®™ ]/g, '').toLowerCase();
sumber