在土耳其语中,有一个字母İ
,是小写字母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()
返回了一个额外的字符,如果我没记错的话,它是COMBINING DOT ABOVE (U+0307)。
我该如何去除这个字符?
我可以直接过滤字符串:
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(""));
但是我是否正确处理了这个问题呢?有没有更好的方法?此外,为什么会出现这个额外的字符?
存在一些不一致性。例如,在土耳其语中,有一个小写形式的 I
:ı
。为什么以下比较返回 true 呢?
console.log( "ı".toUpperCase() == "i".toUpperCase() ) // true
当
console.log( "İ".toLowerCase() == "i" ) // false
返回 false?
String.toLocaleLowerCase()
吗?https://dev59.com/lHI-5IYBdhLWcg3wcn7m - Tobias Timmı(U+0131)
和i(U+0069)
的映射是相同的:I(U+0049)
。 - MinusFourİ
映射到i
而不是i + COMBINING DOT ABOVE
吗?目前的映射似乎有点荒谬。 - akinuri.toLocaleLowerCase
。 - MinusFour