我正在重构我的一些旧代码,然后我发现我Character.toTitleCase()在某些时候使用过方法并且无法帮助自己想知道是否Character.toUpperCase()会更好.
我阅读了他们的描述并没有看到任何基本的区别:
使用UnicodeData文件中的大小写映射信息将字符参数转换为大写.请注意,对于某些字符范围,Character.isUpperCase(Character.toUpperCase(ch))并不总是返回true,特别是那些符号或表意符号.
通常,String.toUpperCase()应该用于将字符映射到大写.字符串大小写映射方法比字符大小写映射方法有几个好处.字符串大小写映射方法可以执行区域设置敏感的映射,上下文相关的映射和1:M字符映射,而字符大小写映射方法则不能.
注意:此方法无法处理补充字符.要支持所有Unicode字符(包括增补字符),请使用toUpperCase(int)方法.
和
使用UnicodeData文件中的大小写映射信息将字符参数转换为titlecase.如果一个字符没有明确的标题映射,并且根据UnicodeData本身不是一个标题字符串,那么大写映射将作为等效的标题映射返回.如果char参数已经是titlecase char,则返回相同的char值.请注意,对于某些字符范围,Character.isTitleCase(Character.toTitleCase(ch))并不总是返回true.
注意:此方法无法处理补充字符.要支持所有Unicode字符(包括增补字符),请使用toTitleCase(int)方法.
然后我试着像这样测试它们:
public class Test {
public static void main(String... args) {
String originalString = "abcdefghijklmnopqrstuvwxyz123546-.,/*&%+";
StringBuilder upperCaseStringBuilder = new StringBuilder();
StringBuilder titleCaseStringBuilder = new StringBuilder();
for (int i = 0; i < originalString.length(); i++) {
upperCaseStringBuilder.append(Character.toUpperCase(originalString.charAt(i)));
titleCaseStringBuilder.append(Character.toTitleCase(originalString.charAt(i)));
}
System.out.println("Original String : " + originalString);
System.out.println("UpperCase result: " + upperCaseStringBuilder.toString());
System.out.println("TitleCase result: " + titleCaseStringBuilder.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Original String : abcdefghijklmnopqrstuvwxyz123546-.,/*&%+
UpperCase result: ABCDEFGHIJKLMNOPQRSTUVWXYZ123546-.,/*&%+
TitleCase result: ABCDEFGHIJKLMNOPQRSTUVWXYZ123546-.,/*&%+
Run Code Online (Sandbox Code Playgroud)
所以我无法理解这两种方法之间的区别.正如我之前所说,我toTitleCase()在我的代码中用来大写a String.
是否有任何关键的区别我没有考虑过,哪些可能导致我的代码在某些特殊情况下的行为不同于预期?
注意:我认为这不是String大写的重复- 更好的方法 .因为在那个问题中,问题在于字符串大写的性能,而不是在这个问题中的字符的大写和标题情况.
标准的ASCII字符太无聊了!这里有更令人兴奋的事情:
System.out.println(Character.toTitleCase('?')); // ?
System.out.println(Character.toUpperCase('?')); // ?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
745 次 |
| 最近记录: |