EDIT : Bu cevap ilk 9 yıl önce eklendi. Bugün localeCompare
şu sensitivity: 'accent'
seçenekle kullanmalısınız :
function ciEquals(a, b) {
return typeof a === 'string' && typeof b === 'string'
? a.localeCompare(b, undefined, { sensitivity: 'accent' }) === 0
: a === b;
}
console.log("'a' = 'a'?", ciEquals('a', 'a'));
console.log("'AaA' = 'aAa'?", ciEquals('AaA', 'aAa'));
console.log("'a' = 'á'?", ciEquals('a', 'á'));
console.log("'a' = 'b'?", ciEquals('a', 'b'));
Yukarıda farklı aksanlar (üçüncü örnekte olduğu gibi) olmadığı sürece aynı taban harfinin iki varyantını aynı olarak işlemeyi { sensitivity: 'accent' }
söyler .localeCompare()
Alternatif { sensitivity: 'base' }
olarak, taban karakterleri aynı olduğu sürece iki karaktere eşdeğer davranan (böylece A
eşdeğer kabul edilir á
) kullanabilirsiniz.
Not Bunun Üçüncü parametre localeCompare
IE10 desteklenen veya düşürmek veya bu tarayıcıları desteklemek gerekiyorsa, son çare çeşit gerekir böylece belirli mobil tarayıcılar, (yukarıda bağlantısı sayfadaki uyum tablosuna bakın) değildir:
function ciEqualsInner(a, b) {
return a.localeCompare(b, undefined, { sensitivity: 'accent' }) === 0;
}
function ciEquals(a, b) {
if (typeof a !== 'string' || typeof b !== 'string') {
return a === b;
}
// v--- feature detection
return ciEqualsInner('A', 'a')
? ciEqualsInner(a, b)
: /* fallback approach here */;
}
Orijinal cevap
JavaScript'te büyük / küçük harf duyarsız bir karşılaştırma yapmanın en iyi yolu match()
, i
bayrakla RegExp yöntemini kullanmaktır .
Büyük / küçük harfe duyarlı olmayan arama
Karşılaştırılan her iki dizge de değişkenler (sabitler değil) ise, biraz daha karmaşıktır, çünkü dizeden bir RegExp oluşturmanız gerekir, ancak dizeyi RegExp yapıcısına iletmek dizenin özel regex'i varsa yanlış eşleşmelere veya başarısız eşleşmelere neden olabilir içindeki karakterler.
Eğer uluslararası önem veriyorsanız kullanmayın toLowerCase()
veya toUpperCase()
tüm dillerdeki doğru harf duyarsız karşılaştırmalar sağlamaz olarak.
http://www.i18nguy.com/unicode/turkish-i18n.html
.localeCompare()
javascript yöntemine bakın. Yazma sırasında yalnızca modern tarayıcılar tarafından desteklenir (IE11 +). bkz. developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/…