พาลินโดรม
Palindrome คือคำ วลี หรือตัวเลขที่อ่านเหมือนกันย้อนกลับไปข้างหน้า เช่น มาลายาลัม มาดาม พยาบาล ฯลฯ
เราควรจะใช้นิพจน์ทั่วไปที่นี่เพื่ออนุญาตเฉพาะอักขระที่เป็นตัวอักษรและตัวเลขคละกัน "\W" เป็น regex ในตัวที่ทำให้งานของเราง่ายขึ้น มีบางขั้นตอนที่ต้องปฏิบัติตามเพื่อตรวจสอบว่าสตริงที่ระบุเป็น palindrome หรือไม่
ขั้นตอนที่ต้องปฏิบัติตาม
- ขั้นแรก เราต้องเปลี่ยนอักขระทั้งหมดของสตริงเป็นตัวพิมพ์เล็ก
- ต่อมา เราต้องลบค่าที่ไม่ใช่ตัวอักษรและตัวเลขคละกันทั้งหมด งานนี้สามารถทำได้โดยใช้นิพจน์ทั่วไป inbuilt ชื่อ '\W' หรือเราสามารถสร้างนิพจน์ทั่วไปของเราเองได้
- เราจำเป็นต้องแทนที่ค่าที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมดด้วย nothing("") งานนี้สามารถทำได้โดยใช้วิธีการ inbuilt ที่เรียกว่าแทนที่ ()
- เมื่อเราเอาค่าที่ไม่ใช่ตัวเลขและตัวอักษรจากสตริง เราจำเป็นต้องตรวจสอบว่าค่านั้นอ่านเหมือนกันในทิศทางย้อนกลับและไปข้างหน้าหรือไม่
- เราจำเป็นต้องย้อนกลับสตริงที่ปรับปรุงแล้วโดยใช้เมธอด string.reverse() และสตริงผลลัพธ์ควรถูกเปรียบเทียบกับสตริงเดิม
- หากทั้งคู่มีค่า "จริง" เท่ากัน จะแสดงในเอาต์พุต มิฉะนั้น "เท็จ" จะแสดงขึ้น
ในตัวอย่างต่อไปนี้ แม้จะส่งค่าที่ไม่ใช่ตัวเลขและตัวอักษร เช่น *, &ฯลฯ โปรแกรมจะตรวจสอบค่าตัวอักษรและตัวเลขและแสดงผลลัพธ์
ตัวอย่าง
<html> <body> <script> function palindrome(str){ var reg = /[\W_]/g; // instead of '\W' we also can take "/[^a-zA-Z0-9]+/g" var smstr = str.toLowerCase().replace(reg, ""); var reversed = smstr.split("").reverse().join(""); if(reversed === smstr){ document.write("true"); } else { document.write("false"); } } palindrome("a929a*/(';-=,.*") </script> </body> </html>
ผลลัพธ์
true