แทนที่อักขระพิเศษในสตริงด้วย _ (ขีดล่าง)


93

ฉันต้องการลบอักขระพิเศษออกจากสตริงและแทนที่ด้วย_อักขระ

ตัวอย่างเช่น:

string = "img_realtime_tr~ading3$"

สตริงผลลัพธ์ควรมีลักษณะดังนี้ "img_realtime_tr_ading3_";

ฉันต้องการแทนที่อักขระเหล่านั้น: & / \ # , + ( ) $ ~ % .. ' " : * ? < > { }


48
ทำไมถึงปิดมันเป็นคำถามที่ดี วิธีแทนที่อักขระพิเศษมีประโยชน์เมื่อสร้าง URL ที่เหมาะกับ SE โชคดีที่ยังมีคนตอบกลับ
จักรยาน

1
สถานการณ์ที่แคบเป็นพิเศษซึ่งโดยทั่วไปไม่สามารถใช้ได้กับผู้ชมอินเทอร์เน็ตทั่วโลก? สมมุติว่าอย่างน้อย 108 คนที่คิดอย่างอื่น
Antoine Pelletier

1
ปิด? มีประโยชน์มากเมื่อขูดข้อมูลสกปรก
Standaa Reinstate Monica

สิ่งนี้ไม่ควรปิด
Mustkeem K

คำตอบ:


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

หรือหากต้องการเปลี่ยนตัวอักษรทั้งหมดยกเว้นตัวเลขและตัวอักษรให้ลอง:

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

เย็น! !ขาดหายไปในบรรทัดแรก
ProblemsOfSumit

4
บรรทัดที่สองมีประโยชน์มากในหลาย ๆ โอกาส
mastazi

\-และ=หายไปด้วย :)
Simo D'lo Mafuxwana

2
หากคุณมีอักขระพิเศษก่อนเว้นวรรคเช่นhello! wordคุณจะลงเอยด้วยเครื่องหมายขีดล่างสองอันติดต่อกันเช่นนี้hello__wordคุณสามารถทำได้:string = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/__/g,'_');
DannyFeliz

3
@DannyFeliz หรือแม้ว่าstring = string.replace(/[^a-zA-Z0-9]/g,'_').replace(/_{2,}/g,'_');คุณจะไม่รู้ว่ากี่อันต่อเนื่องกัน
ก็ตาม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.