首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Character.toUpperCase()和Character.toTitleCase()有什么区别?

Character.toUpperCase()和Character.toTitleCase()有什么区别?
EN

Stack Overflow用户
提问于 2017-12-19 12:37:54
回答 2查看 1.9K关注 0票数 13

我正在重构我的一些旧代码,然后我发现我在某个时候使用了Character.toTitleCase()方法,并且忍不住想知道Character.toUpperCase()是否会更好。

我读了他们的描述,没有看到任何基本的区别:

toUpperCase 使用UnicodeData文件中的大小写映射信息将字符参数转换为大写。请注意,对于某些字符范围,特别是那些符号或表意文字,Character.isUpperCase(Character.toUpperCase(ch))并不总是返回true。 通常,应该使用String.toUpperCase()将字符映射为大写。字符串案例映射方法比字符案例映射方法有几个优点。字符串案例映射方法可以执行区域敏感映射、上下文敏感映射和1:M字符映射,而字符大小写映射方法则不能。 注意:此方法无法处理补充字符。若要支持所有Unicode字符,包括补充字符,请使用toUpperCase(int)方法。

toTitleCase 使用UnicodeData文件中的大小写映射信息将字符参数转换为标题。如果一个字符没有显式的点阵映射,而且根据UnicodeData本身也不是一个点阵字符,则大写映射作为一个等价的点阵映射返回。如果char参数已经是一个标题字符char,那么将返回相同的char值。注意,对于某些字符范围,Character.isTitleCase(Character.toTitleCase(ch))并不总是返回true。 注意:此方法无法处理补充字符。若要支持所有Unicode字符,包括补充字符,请使用toTitleCase(int)方法。

然后我试着像这样测试它们:

代码语言:javascript
运行
复制
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());
  }
}

这是输出:

代码语言:javascript
运行
复制
Original String : abcdefghijklmnopqrstuvwxyz123546-.,/*&%+
UpperCase result: ABCDEFGHIJKLMNOPQRSTUVWXYZ123546-.,/*&%+
TitleCase result: ABCDEFGHIJKLMNOPQRSTUVWXYZ123546-.,/*&%+

所以我无法理解这两种方法的区别。如前所述,我在代码中使用toTitleCase()来大写String

在某些特殊情况下,是否存在一些我没有考虑到的关键差异,这可能导致我的代码在某些特殊情况下的行为不同于预期?

Note:我不认为这是的重复。因为在这个问题中,问题在于字符串大写的性能,而不是字符的大写和标题大小写。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-19 12:48:25

标准的ASCII角色太无聊了!下面是一些更令人兴奋的东西

代码语言:javascript
运行
复制
System.out.println(Character.toTitleCase('dz'));  // Dz
System.out.println(Character.toUpperCase('dz'));  // DZ

现场演示。

票数 12
EN

Stack Overflow用户

发布于 2017-12-19 12:48:02

我看不出有什么“真正的”差别,我认为最好不要过分考虑细节。我想指出这里唯一的一行,应该有助于解决这里的“问题”。

一般来说,应该使用String.toUpperCase() 将字符映射为大写。字符串案例映射方法比字符大小写映射方法有几个优点。

文档String.toUpperCase()touppercase.asp

如果其他人有更多的内部信息,他们应该发表评论。

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47887244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档