ค้นหาเว็บไซต์

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 คุณจะต้องมีโพลีฟิลล์

บทความที่เกี่ยวข้อง