请查看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
小写是i̇,长度是3
在第一个System.out.println()
语句中,结果是准确的。但是,在第二个声明中,它显示的长度 3 实际应该是 1 。我不明白,为什么?
答案 0 :(得分:5)
不同的语言有不同的规则可以转换为大写或小写。
例如,在德语中,小写ß变为两个大写字母S,因此单词“straße”(一条街道)长度为6个字符,变为“STRASSE”,长度为7个字符。
这就是为什么你的上套和下套弦有不同的长度。
我在我的一个Java测验中写过: http://thecodersbreakfast.net/index.php?post/2010/09/24/Java-Quiz-42-%3A-A-string-too-far
答案 1 :(得分:1)
我得到了不同的结果:
Before case conversion is Ì and length is 1
Lower case is i?? and length is 3
答案 2 :(得分:1)
与Does Java's toLowerCase() preserve original string length?完全相同。这非常有帮助,并且非常详细地回答。 str和str.toLowerCase()的长度并不总是相同,因为转换取决于每个char的代码。
在这种情况下,第二个输出是“小写为i??
,长度为3”。它落后于两个?标记长度为3。