【问题标题】:Converting a lowercase char to uppercase without using an if statement在不使用 if 语句的情况下将小写字符转换为大写
【发布时间】:2014-03-28 19:04:51
【问题描述】:

如何在不使用 if 语句的情况下将小写 char 转换为大写? IE。不要使用这样的代码:

if(c > 'a' && c < 'z')
{
    c = c-32;
}

【问题讨论】:

  • 查看Character 类方法。
  • 你不能只使用toUpperCase?
  • @Gray 只是让您知道,该文档是两个主要版本并且已经过时超过 2.5 年。
  • @TheGuywithTheHat 谢谢,我没注意到。我刚刚用谷歌搜索了大写字符并选择了第一个。
  • 全新版本:toUpperCase

标签: java char case-conversion


【解决方案1】:

你可以用这个:

char uppercase = Character.toUpperCase(c);

【讨论】:

    【解决方案2】:

    使用Character.toUpperCase(char):

    使用 UnicodeData 文件中的大小写映射信息将字符参数转换为大写。

    例如,Character.toUpperCase('a') 返回'A'。

    所以你可能想要的完整代码是:

    c = Character.toUpperCase(c);
    

    【讨论】:

    • 谢谢,我理解这个大写,但我不会使用它。
    【解决方案3】:

    如果您确定您的字符是 ASCII 字母,那么您可以取消设置使其变为小写的位,因为小写和大写拉丁字符之间的区别只是 ASCII 表中的一位。

    你可以这样做:

    char upper = c & 0x5F;
    

    【讨论】:

      【解决方案4】:

      您可以使用ternary operator。对于您的情况,请尝试以下操作:

      c = (c >= 'a' && c <= 'z') ? c = c - 32 : c;
      

      【讨论】:

      • 你可能想让三元的 else 部分返回 c 而不是 1。
      • 另外,你为什么将c 分配给整个表达式,但在它的中间也分配c?这是一种可怕的结构,实际上可能会在某些非 Java 语言中出现问题,因为这些语言的顺序评估不太明确。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2011-08-12
      • 2011-10-29
      • 2014-03-30
      相关资源
      最近更新 更多