为什么Java Character.toUpperCase / toLowerCase没有像String.toUpperCase / toLowerCase这样的语言环境参数

问题描述 投票:10回答:4

我想知道为什么Character.toUpperCase/toLowerCase没有像String.toUpperCase/toLowerCase这样的语言环境参数。

我必须使用任何语言的第一个大写字母。我有2个解决方案:

  1. 使用Character.toUpperCase

    String text = "stack overflow";
    StringBuilder sb = new StringBuilder(text);   
    
    sb.setCharAt(0, Character.toUpperCase(sb.charAt(0))); // No Locale parameter here.
    
    String out = sb.toString(); //Out: Stack overflow
    
  2. 使用String.toUpperCase

    Locale myLocale = new Locale(locateId);
    
    String text = "stack overflow";
    String text1 = text.substring(0,1).toUpperCase(myLocale );
    String text2 = text.substring(1);
    
    String out = text1 + text2; // Out: Stack overflow
    

对于我的语言环境。两种方法的结果相同。

我的问题是:

  • 由于文本可以使用任何语言。我应该使用哪种方式?

  • 为什么Character.toUpperCase/toLowerCase没有Locale参数,因为Character.toUpperCase/toLowerCaseString.toUpperCase/toLowerCase之间没有太大差异,因为字符串是字符数组。

java locale multilingual uppercase lowercase
4个回答
4
投票

Character#toUpperCase(int) Javadoc,

通常,Character#toUpperCase(int)应该用于将字符映射为大写。 String.toUpperCase()案例映射方法比String案例映射方法具有多个优点。 Character大小写映射方法可以执行区域设置敏感映射,上下文敏感的映射和1:M字符映射,而String大小写映射方法则不能。

所以答案就是您的[[second

示例(Character

6
投票
正如Javadoc所说:

1
投票
如果问题是“我应该使用哪种方法”,那么这个问题是String.toUpperCase的重复,正确的答案是EITHER

0
投票
[在这里,我将解释除了Character之外,还支持ToUpperCaseToLowerCasechar版本的一些问题。
© www.soinside.com 2019 - 2024. All rights reserved.