Thay thế các ký tự đặc biệt trong một chuỗi bằng _ (dấu gạch dưới)


92

Tôi muốn xóa các ký tự đặc biệt khỏi một chuỗi và thay thế chúng bằng _ký tự.

Ví dụ:

string = "img_realtime_tr~ading3$"

Chuỗi kết quả sẽ giống như "img_realtime_tr_ading3_";

Tôi cần thay thế các ký tự đó: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
tại sao cái này bị đóng, đó là một câu hỏi hay. Cách thay thế các ký tự đặc biệt, hữu ích khi tạo URL thân thiện với SE. Rất may vẫn có người trả lời nó.
xe đạp

1
Một tình huống cực kỳ hạn hẹp không thể áp dụng chung cho đối tượng Internet trên toàn thế giới? Hãy cứ nói rằng ít nhất 108 người đang nghĩ khác.
Antoine Pelletier

1
Đóng cửa? Tuy nhiên, khá hữu ích khi quét dữ liệu bẩn.
Standaa Phục hồi Monica

Điều này không nên bị đóng cửa
Mustkeem K

Câu trả lời:


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

Ngoài ra, để thay đổi tất cả các ký tự ngoại trừ số và chữ cái, hãy thử:

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

Mát mẻ! !mặc dù bị thiếu trong dòng đầu tiên.
ProblemsOfSumit

4
Dòng thứ hai rất hữu ích trong một số trường hợp.
mastazi

\-=cũng thiếu :)
Simo D'lo Mafuxwana

2
Nếu bạn có một nhân vật đặc biệt trước khi một không gian như hello! wordbạn sẽ kết thúc với hai gạch liên tiếp như thế này hello__wordnhư vậy, bạn có thể làm điều này:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz hoặc thậm chí string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');nếu bạn không biết có bao nhiêu liên tiếp dấu gạch
falkodev

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.