我想知道为什么Character.toUpperCase/toLowerCase
没有像String.toUpperCase/toLowerCase
这样的语言环境参数。
我必须使用任何语言的第一个大写字母。我有2个解决方案:
使用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
使用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/toLowerCase
和String.toUpperCase/toLowerCase
之间没有太大差异,因为字符串是字符数组。
从Character#toUpperCase(int)
Javadoc,
示例(通常,
Character#toUpperCase(int)
应该用于将字符映射为大写。String.toUpperCase()
案例映射方法比String
案例映射方法具有多个优点。Character
大小写映射方法可以执行区域设置敏感映射,上下文敏感的映射和1:M字符映射,而String
大小写映射方法则不能。所以答案就是您的[[second
Character
)String.toUpperCase
的重复,正确的答案是EITHERCharacter
之外,还支持ToUpperCase
的ToLowerCase
和char
版本的一些问题。