"İ".toLowerCase() != "i"
"İ".toLowerCase() != "i"
在土耳其语中,有一个字母 İ
,它是 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()
returns多了一个字符,如果没记错的话是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
的小写形式:ı
。为什么下面的比较returns为真
console.log( "ı".toUpperCase() == "i".toUpperCase() ) // true
同时
console.log( "İ".toLowerCase() == "i" ) // false
returns假的?
您需要土耳其语特定的大小写转换,可用于 String#toLocaleLowerCase
:
let s = "İ";
console.log(s.toLowerCase().length);
console.log(s.toLocaleLowerCase('tr-TR').length);
您可以只对语言使用 LocalLowerCase 或 LocalUpperCase
像土耳其语和其他字母
点和无点 i 版本,如阿塞拜疆语、哈萨克语、鞑靼语和克里米亚鞑靼语。
var string_tr = "İ".toLocalLowerCase();
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
在土耳其语中,有一个字母 İ
,它是 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()
returns多了一个字符,如果没记错的话是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
的小写形式:ı
。为什么下面的比较returns为真
console.log( "ı".toUpperCase() == "i".toUpperCase() ) // true
同时
console.log( "İ".toLowerCase() == "i" ) // false
returns假的?
您需要土耳其语特定的大小写转换,可用于 String#toLocaleLowerCase
:
let s = "İ";
console.log(s.toLowerCase().length);
console.log(s.toLocaleLowerCase('tr-TR').length);
您可以只对语言使用 LocalLowerCase 或 LocalUpperCase 像土耳其语和其他字母 点和无点 i 版本,如阿塞拜疆语、哈萨克语、鞑靼语和克里米亚鞑靼语。
var string_tr = "İ".toLocalLowerCase();
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