2016-05-23 4 views
0
JSを大文字私のjavascriptが大文字のSはokですしながら、( İ)、O、C、G、U( Şに問題があるのはなぜ

Öと異なる長さを与えます、ÇÜJavascriptのtoLowerCaseメソッド()非ラテン文字

enter image description here

:(問題文字位置と関連していない)懐疑について

"İş".toLowerCase().length 
3 
"İŞ".toLowerCase().length 
3 
"iŞ".toLowerCase().length 
2 
"iş".toLowerCase().length 
2 

また

"İ".length 
1 
"İ".toLowerCase().length 
2 
"İ".toLocaleLowerCase().length 
2 

は、ここに私は上記のコードをコピーし、コンソールのスクリーンショットであります

と私の文字セット(この問題が発生した後で最初にチェックしたもの):

<meta charset="utf-8" /> 

ありがとうございます。

答えて

3

問題は大文字の上の文字İです。これはJavaScriptの別の文字列値です。文字数を確認するには.split();を使用します。それに気づくもう一つの事は首都İについてだけでなく、もそのリストにあります。

ロケール固有のケースマッピングには、String.prototype.toLocaleLowerCase()を使用する必要があります。

console.log("áş".toLocaleLowerCase().split('')); 
 

 
console.log("İş".toLocaleLowerCase().split(''));

+0

これは私に多くのことを教えられたが、 ' "I" .length'は1しばらく' "I" .toLowerCase()。length'と ' "I" .toLocaleLowerCase()。長さであります'toLowerCase()'や 'toLocaleLowerCase()'は2文字であると考えていますが、別の文字列値(Iの上の点)はIと一緒に1つのcharとみなされます。 – ErTR

+1

@Ertürköztürkこの場合、私はちょっと困惑しています。ロケールには内部的な問題があるかもしれません。 – Jai

関連する問題