Türkçe'de, i
numaralı büyük harf olan İ
numaralı bir mektup var. Küçük harfe dönüştürdüğümde tuhaf bir sonuç alırım. Örneğin:"İ" .toLowerCase()! = "I"
var string_tr = "İ".toLowerCase();
var string_en = "i";
console.log(string_tr == string_en); // false
console.log(string_tr.split("")); // ["i", "̇"]
console.log(string_tr.charCodeAt(1)); // 775
console.log(string_en.charCodeAt(0)); // 105
"İ".toLowerCase()
fazladan bir karakter verir ve yanılmıyorsam eğer, bu COMBINING DOT ABOVE (U+0307) bu.
Bu karakterden nasıl kurtulurum?
Sadece dize filtre olabilir:
var string_tr = "İ".toLowerCase();
string_tr = string_tr.split("").filter(function (item) {
if (item.charCodeAt(0) != 775) {
return true;
}
}).join("");
console.log(string_tr.split(""));
ama bunu doğru teslim ben? Daha çok tercih edilen bir yolu var mı? Dahası, bu ekstra karakter neden ilk sırada yer alıyor?
Bazı tutarsızlıklar var. Örneğin, Türkçe olarak, I
: ı
'un küçük bir şekli vardır. Aşağıdaki karşılaştırma
console.log("ı".toUpperCase() == "i".toUpperCase()) // true
ise
console.log("İ".toLowerCase() == "i") // false
döner false true döndürür Nasıl yani?
Eğer 'String.toLocaleLowerCase()' denediniz mi? https://stackoverflow.com/questions/1850232/turkish-case-conversion-in-javascript –
Buradan daha fazla bilgi alabilirsiniz: https://msdn.microsoft.com/en-us/library/ms973919.aspx# stringsinnet20_topic5 – JOSEFtw
@JOSEFtw Merak ediyorum, JS niçin "" ı ".toUpperCase()' i doğru bir şekilde çevirir, fakat "İ" yi değil .toLowerCase() "'. – akinuri