วิธีแก้ปัญหาแรกไม่สามารถใช้ได้กับตัวอักษร UTF-8 ใด ๆ (มันจะตัดข้อความเช่นЇжак) ฉันจัดการเพื่อสร้างฟังก์ชั่นที่ไม่ได้ใช้ RegExp และใช้การสนับสนุน UTF-8 ที่ดีในเอนจิ้น JavaScript ความคิดนั้นง่ายหากสัญลักษณ์มีตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นอักขระพิเศษ มีข้อยกเว้นเพียงอย่างเดียวสำหรับช่องว่าง
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
อัปเดต:โปรดทราบว่าโซลูชันนี้ใช้งานได้กับภาษาที่มีอักษรตัวเล็กและใหญ่เท่านั้น ในภาษาจีนเช่นนี้จะไม่ทำงาน
อัปเดต 2:ฉันมาที่โซลูชันดั้งเดิมเมื่อฉันทำงานกับการค้นหาที่คลุมเครือ หากคุณพยายามลบอักขระพิเศษเพื่อใช้ฟังก์ชันการค้นหาก็จะมีวิธีการที่ดีกว่า ใช้ไลบรารีการทับศัพท์ใด ๆที่จะสร้างสตริงคุณจากตัวอักษรละตินเท่านั้นจากนั้น Regexp แบบง่าย ๆ จะทำการลบอักขระพิเศษทั้งหมด (สิ่งนี้จะใช้ได้กับภาษาจีนด้วยและคุณจะได้รับผลประโยชน์ด้านข้างด้วยการทำTromsø
== Tromso
)