Bir dizedeki özel karakterleri _ (alt çizgi) ile değiştirin


93

Bir dizeden özel karakterleri çıkarmak ve onları _karakterle değiştirmek istiyorum .

Örneğin:

string = "img_realtime_tr~ading3$"

Elde edilen dize "img_realtime_tr_ading3_" gibi görünmelidir;

Bu karakterleri değiştirmem gerekiyor: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
bu neden kapalı, bu iyi bir soru. Özel karakterler nasıl değiştirilir, SE dostu URL'ler oluştururken yararlıdır. Neyse ki yine de birisi cevap verdi.
bisiklet

1
İnternetin dünya çapındaki izleyicileri için genel olarak uygulanamayan olağanüstü dar bir durum mu? Peki, başka türlü düşündüğünde en az 108 kişi olduğunu söyleyelim.
Antoine Pelletier

1
Kapalı mı? Yine de kirli verileri toplarken oldukça kullanışlıdır.
Standaa Reinstate Monica

Bu kapatılmamalıdır
Mustkeem K

Yanıtlar:


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

Alternatif olarak, sayılar ve harfler dışındaki tüm karakterleri değiştirmek için şunu deneyin:

string = string.replace(/[^a-zA-Z0-9]/g,'_');

Güzel! !yine de ilk satırda eksik.
ProblemsOfSumit

4
İkinci satır, birçok durumda çok kullanışlıdır.
mastazi

\-ve =ayrıca eksik :)
Simo D'lo Mafuxwana

2
Sizin gibi bir boşluktan önce özel bir karakteriniz hello! wordvarsa, bu hello__wordşekilde art arda iki alt çizgi ile sonuçlanacaktır , bunu yapabilirsiniz:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz veya string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');arka arkaya kaç alt çizgi bilmiyor olsanız bile
falkodev

1
string = string.replace(/[\W_]/g, "_");
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.