İlk çözüm herhangi bir UTF-8 alfabesi için çalışmaz. (Їжак gibi metinleri keser). RegExp kullanmayan ve JavaScript motorunda iyi UTF-8 desteği kullanan bir işlev oluşturmayı başardım. Bir sembol büyük harf ve küçük harf özel ise, basit bir fikirdir. Tek istisna boşluk için yapılır.
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;
}
Güncelleme: Bu çözümün yalnızca küçük ve büyük harflerin bulunduğu diller için çalıştığını lütfen unutmayın. Çince gibi dillerde, bu işe yaramaz.
Güncelleme 2: Bulanık bir arama üzerinde çalışırken orijinal çözüme geldim. Arama işlevini uygulamak için özel karakterleri de kaldırmaya çalışıyorsanız, daha iyi bir yaklaşım vardır. Size yalnızca Latin karakterlerinden dize üretecek herhangi bir harf çevirisi kitaplığı kullanın ve daha sonra basit Regexp özel karakterleri kaldırmanın tüm sihrini yapacaktır. (Bu Çince için de işe yarayacak ve Tromsø
== yaparak yan avantajlar elde edeceksiniz Tromso
).