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

 

解读:
 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()更好一些,这样的代码反而能够适应不同的语言环境。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值