javascript - แทนที่ช่องว่างด้วยขีดกลางและทำให้ตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็ก
ฉันต้องการจัดรูปแบบสตริงใหม่โดยใช้ jQuery หรือ JavaScript ธรรมชาติ
สมมติว่าเรามี "Sonic Free Games".
ฉันต้องการแปลงมันเป็น "sonic-free-games"
ดังนั้นช่องว่างควรถูกแทนที่ด้วยเครื่องหมายขีดกลางและตัวอักษรทั้งหมดต้องถูกเปลี่ยนเป็นตัวเล็ก
ช่วยเรื่องนี้หน่อยได้ไหม?
คำตอบ #1
แค่ใช้เมธอด replace และ toLowerCase ของสตริง เช่น:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase();
console.log(str); // "sonic-free-games"
สังเกตธง g บน RegExp มันจะทำให้การแทนที่เกิดขึ้น ทั่วทั้ง สตริง หากไม่ได้ใช้ จะมีการแทนที่เฉพาะครั้งแรกเท่านั้น และอีกอย่าง RegExp นั้นจะตรงกับอักขระเว้นวรรคหนึ่งตัวหรือมากกว่า
คำตอบ #2
คำตอบข้างต้นสามารถถือว่า ทำให้สับสนเล็กน้อยได้ วิธีของสตริงไม่ได้ แก้ไข วัตถุต้นฉบับ พวกมัน ส่งกลับ วัตถุใหม่ มันต้องเป็น:
var str = "Sonic Free Games";
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str
คำตอบ #3
คุณยังสามารถใช้ split และ join ได้อีกด้วย:
"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games
คำตอบ #4
วิธีที่ตรงไปตรงมามากคือการใช้เมธอด replaceAll() ของ JavaScript สำหรับสตริง
"Sonic Free Games".replaceAll(' ', '-').toLowerCase(); //sonic-free-games
สำหรับการแทนที่ที่ง่ายแบบนี้ การใช้ regex มักจะเกินความจำเป็น
นี่ง่ายขึ้นและอ่านง่ายขึ้น
อย่างไรก็ตาม หากคุณยังต้องการใช้ regex คุณก็สามารถใช้มันกับวิธีนี้ได้เช่นกัน ดูเอกสารของ Mozilla สำหรับตัวอย่าง
ถ้าคุณต้องการการสนับสนุน IE คุณจะต้องมีโพลีฟิลล์
