without insensitive includes ignorecase javascript case-sensitive uppercase

javascript - insensitive - “İ”.toLowerCase()!=“I”



javascript ignorecase (1)

En turco, hay una letra İ que es la forma mayúscula de i . Cuando lo convierto en minúsculas, obtengo un resultado extraño. Por ejemplo:

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() devuelve un carácter adicional, y si no me equivoco, es "İ".toLowerCase() ARRIBA (U + 0307) .

¿Cómo me deshago de este personaje?

Podría simplemente filtrar la cadena:

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(""));

¿Pero estoy entregando esto correctamente? ¿Hay alguna forma más preferible? Además, ¿por qué aparece este carácter extra en primer lugar?

Hay alguna inconsistencia. Por ejemplo, en turco, hay una forma minúscula de I : ı . ¿Cómo es que la siguiente comparación devuelve verdadero?

console.log( "ı".toUpperCase() == "i".toUpperCase() ) // true

mientras

console.log( "İ".toLowerCase() == "i" ) // false

devuelve falso?


Necesitará una conversión de caso específica de Turquía, disponible con String#toLocaleLowerCase :

let s = "İ"; console.log(s.toLowerCase().length); console.log(s.toLocaleLowerCase(''tr-TR'').length);