为什么 Java Character.toUpperCase/toLowerCase 没有像 String.toUpperCase/toLowerCase 那样的 Locale 参数

我想知道为什么没有像.Character.toUpperCase/toLowerCaseString.toUpperCase/toLowerCase

我必须首先大写一个可以采用任何语言的文本。我有2个解决方案:

  1. 使用字符。

    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. Use 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
    

对于我的区域设置。两种方式具有相同的结果。

我的问题是:

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

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


答案 1

正如Javadoc所说:

通常,String.toUpperCase() 应该用于将字符映射到大写。字符串大小写映射方法与字符大小写映射方法相比有几个优点。字符串大小写映射方法可以执行区分区域设置的映射、上下文相关映射和 1:M 字符映射,而字符大小写映射方法则不能。

所以使用 String.toUppercase()


答案 2

Character#toUpperCase(int) Javadoc,

通常,应用于将字符映射到大写。 与事例映射方法相比,事例映射方法有几个优点。 大小写映射方法可以执行区分区域设置的映射、上下文相关映射和 1:M 字符映射,而大小写映射方法则不能。String.toUpperCase()StringCharacterStringCharacter

所以,答案是你的第二个例子(String.toUpperCase)


推荐