Solusi pertama tidak berfungsi untuk alfabet UTF-8 apa pun. (Ini akan memotong teks seperti Їжак). Saya telah berhasil membuat fungsi yang tidak menggunakan RegExp dan menggunakan dukungan UTF-8 yang baik di mesin JavaScript. Idenya sederhana jika sebuah simbol sama dalam huruf besar dan kecil itu adalah karakter khusus. Satu-satunya pengecualian dibuat untuk whitespace.
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;
}
Pembaruan: Harap dicatat, bahwa solusi ini hanya berfungsi untuk bahasa di mana ada huruf kecil dan kapital. Dalam bahasa seperti China, ini tidak akan berfungsi.
Pembaruan 2: Saya datang ke solusi asli ketika saya sedang mengerjakan pencarian fuzzy. Jika Anda juga mencoba menghapus karakter khusus untuk mengimplementasikan fungsionalitas pencarian, ada pendekatan yang lebih baik. Gunakan pustaka transliterasi apa pun yang akan menghasilkan string hanya dari karakter Latin dan kemudian Regexp sederhana akan melakukan semua keajaiban untuk menghapus karakter khusus. (Ini akan bekerja untuk bahasa Cina juga dan Anda juga akan menerima keuntungan tambahan dengan membuat Tromsø
== Tromso
).