Ganti karakter khusus dalam string dengan _ (garis bawah)

93

Saya ingin menghapus karakter khusus dari string dan menggantinya dengan _karakter.

Sebagai contoh:

string = "img_realtime_tr~ading3$"

String yang dihasilkan akan terlihat seperti "img_realtime_tr_ading3_";

Saya perlu mengganti karakter tersebut: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }

pengguna1049997
sumber
48
mengapa ini ditutup, itu pertanyaan yang bagus. Cara mengganti karakter khusus, berguna saat membuat URL yang ramah SE. Untungnya masih ada yang membalasnya.
sepeda
1
Situasi yang sangat sempit yang umumnya tidak berlaku untuk pemirsa internet di seluruh dunia? Anggap saja setidaknya 108 orang berpikir sebaliknya.
Antoine Pelletier
1
Tutup ? Cukup berguna saat mengorek data kotor.
Standaa Reinstate Monica
Ini tidak boleh ditutup
Mustkeem K

Jawaban:

210
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'_');

Cara lainnya, untuk mengubah semua karakter kecuali angka dan huruf, coba:

string = string.replace(/[^a-zA-Z0-9]/g,'_');
Niet the Dark Absol
sumber
Keren! !hilang di baris pertama.
ProblemsOfSumit
4
Baris kedua sangat berguna dalam beberapa kesempatan.
mastazi
\-dan =juga hilang :)
Simo D'lo Mafuxwana
2
Jika Anda memiliki karakter khusus sebelum spasi seperti hello! wordAnda akan berakhir dengan dua garis bawah berturut-turut seperti ini hello__word, Anda dapat melakukan ini:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz
3
@DannyFeliz atau bahkan string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');jika Anda tidak tahu berapa banyak garis bawah yang berurutan
falkodev
1
string = string.replace(/[\W_]/g, "_");
Wen
sumber