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: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


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,'_');

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, "_");
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.