将char转换为大写

she*_*hep 72 java char uppercase

String lower = Name.toLowerCase();
int a = Name.indexOf(" ",0);
String first = lower.substring(0, a);
String last = lower.substring(a+1);
char f = first.charAt(0);
char l = last.charAt(0);
System.out.println(l);
Run Code Online (Sandbox Code Playgroud)

如何将F和L变量转换为大写.

Bal*_*usC 136

你可以用Character#toUpperCase()它.

char fUpper = Character.toUpperCase(f);
char lUpper = Character.toUpperCase(l);
Run Code Online (Sandbox Code Playgroud)

然而它有一些局限性,因为世界意识到比16bit char范围内更多的字符.另请参阅以下javadoc摘录:

注意:此方法无法处理 补充字符.要支持所有Unicode字符(包括增补字符),请使用该toUpperCase(int)方法.


Rah*_*rma 27

您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:

大写:

 char upperChar = 'l' & 0x5f
Run Code Online (Sandbox Code Playgroud)

小写:

   char lowerChar = 'L' ^ 0x20
Run Code Online (Sandbox Code Playgroud)

这个怎么运作:

二进制,十六进制和十进制表:

------------------------------------------
| Binary   |   Hexadecimal     | Decimal |
-----------------------------------------
| 1011111  |    0x5f           |  95     |
------------------------------------------
| 100000   |    0x20           |  32     |
------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我们举一个小lL转换的例子:

二进制AND操作: (l & 0x5f)

l字符具有ASCII 108并且01101100是二进制表示.

   1101100
&  1011111
-----------
   1001100 = 76 in decimal which is **ASCII** code of L
Run Code Online (Sandbox Code Playgroud)

类似地,Ll转换:

二进制异或操作: (L ^ 0x20)

   1001100
^  0100000
-----------
   1101100 = 108 in decimal which is **ASCII** code of l
Run Code Online (Sandbox Code Playgroud)

  • 我真的很震惊,这有7票.虽然我赞赏这种聪明的方法,但聪明的很少会导致可维护的代码,特别是当用于代替像`Character.toUpperCase()`这样的内置方法时.任何这样的用户都应该理解它不会处理任何非ASCII. (6认同)

And*_*s_D 18

看看这个java.lang.Character类,它提供了很多有用的方法来转换或测试字符.

  • +1 我喜欢为用户提供寻找答案的参考的答案 (2认同)
  • -1,如果我们为学生拉网,我们会删除SO主要优点之一.不会花费过多的时间来跟踪人们在断开的链接上嵌套引用. (2认同)

Dav*_*ton 13

f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
Run Code Online (Sandbox Code Playgroud)


Bur*_*ito 6

由于您知道字符是小写的,因此您可以减去相应的 ASCII 值以使它们变为大写:

char a = 'a';
a -= 32;
System.out.println("a is " + a); //a is A
Run Code Online (Sandbox Code Playgroud)

这是一个ASCII 表供参考

  • 仅当字符串仅由 ASCII 字符组成时,此方法才有效。法语、希腊语、西班牙语、土耳其语等语言都有带有大写/小写形式的非 ASCII 字符。这种方法在这些情况下不起作用...... (4认同)

Lik*_*mar 5

System.out.println(first.substring(0,1).toUpperCase()); 
System.out.println(last.substring(0,1).toUpperCase());
Run Code Online (Sandbox Code Playgroud)