4

Javaで次のコードスニペットを見てください。

final public class Main
{
    public static void main(String[] args) 
    {
        Locale.setDefault(new Locale("lt")); 
        String str = "\u00cc";   //setting Lithuanian as locale

        System.out.println("Before case conversion is "+str+" and length is "+str.length());// Ì
        String lowerCaseStr = str.toLowerCase();
        System.out.println("Lower case is "+lowerCaseStr+" and length is "+lowerCaseStr.length());// i?`
    }
}

次の出力が表示されます。

ケース変換前はÌ、長さは1

小文字はī̀、長さは3


最初のSystem.out.println()ステートメントでは、結果は正確です。ただし、2番目のステートメントでは、実際には1であるはずの長さ3が表示されます。分かりません、なぜですか?

4

3 に答える 3

5

言語が異なれば、大文字または小文字に変換するための規則も異なります。

たとえば、ドイツ語では、小文字のßは2つの大文字のSになるため、6文字の長さの「straße」(通り)という単語は、7文字の長さの「STRASSE」になります。

これが、大文字と小文字の文字列の長さが異なる理由です。

これについては、Javaクイズの1つで書きました: http ://thecodersbreakfast.net/index.php?post / 2010/09/24 / Java-Quiz-42-%3A-A-string-too-far

于 2011-12-12T18:09:05.810 に答える
1

別の結果が得られます:

Before case conversion is Ì and length is 1
Lower case is i?? and length is 3
于 2011-12-12T18:09:15.077 に答える
1

JavaのtoLowerCase()は元の文字列の長さを保持しますか?。それは非常に役に立ち、非常に詳細に答えを持っています。strとstr.toLowerCase()の長さは、会話が各文字のコードに依存するため、常に同じであるとは限りません。

この場合、2番目の出力は「小文字i??で長さは3」です。それは2つで引きずられますか?長さが3になるようにマークします。

于 2011-12-12T18:11:01.533 に答える