Java软件低级错误(十 五):大小写转换的正确处理

来源:互联网 发布:网络直播的研究意义 编辑:程序博客网 时间:2024/06/10 23:27
 

解读:
 String提供有大小写转换方法:String.toUpperCase()和String.toLowerCase(),另外还有带Locale参数的大小写转换方法:String.toUpperCase(Locale locale)和String.toLowerCase(Locale locale)。 String.toUpperCase(Locale locale)和String.toLowerCase(Locale locale)之所以要带Locale参数,就是希望你指定使用的是哪种语言,不带参数的String.toUpperCase()和String.toLowerCase()使用的是系统缺省的语言,例如操作系统的当前语言。有些语言的大小写转换使用了较特殊的规则,甚至不是1:1的字符对应关系,也就是说转换前和转换后的字符串长度不一定相等。

¨案例:


public class MyTest

{
  public static void main(String[] args)
  {
    String name = "i";
    System.out.println("转换前:"+name);
    System.out.println("转换后:"+name.toUpperCase);
  } 
}

如果在Eclipse的run对话框中显示告诉VM我用的是Turkish,那最后输出的结果已经不是我预期的大写的I了,而是另外一个字符(İ)。
这个例子充分说明,大小写转换因语言环境的不同,转换结果可能并非如你所预期的。

如果大小写转换之后你是要用于字符串比较(这样的转换纯粹是为了比较的方便),也就是在我们的26个字母通常大小写转换预期内,则强烈建议你显示指定“英文”的Locale(Local.US)。

如果你的大小写转换就是希望遵循当前使用软件的国家语言大小写转换习惯,则使用不带参数的String.toUpperCase()和String.toLowerCase()更好一些,这样的代码反而能够适应不同的语言环境。

 

原创粉丝点击