将char转换为大写

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); 

我怎么会得到F和Lvariables转换为大写。

你可以使用Character#toUpperCase()来做到这一点。

 char fUpper = Character.toUpperCase(f); char lUpper = Character.toUpperCase(l); 

但是,由于全世界都知道更多的字符比16bit char范围还要多,所以它有一些限制。 另请参阅javadoc的以下摘录:

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

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

 f = Character.toUpperCase(f); l = Character.toUpperCase(l); 

不要使用现有的工具,你可以尝试下面的转换使用布尔操作:

大写:

  char upperChar = (char) (c & 0x5f) 

小写:

  char lowerChar = (char) (c ^ 0x20) 

例如

 char fUpper = (char) (f & 0x5f); char lUpper = (char) (l & 0x5f); 

怎么运行的:

二进制,hex和十进制表:

 ------------------------------------------ | Binary | Hexadecimal | Decimal | ----------------------------------------- | 1011111 | 0x5f | 95 | ------------------------------------------ | 100000 | 0x20 | 32 | ------------------------------------------ 

我们举一个从小到大的L转换的例子:

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

l字符有ASCII 01101100是二进制表示。

  1101100 & 1011111 ----------- 1001100 = 76 in decimal which is **ASCII** code of L 

类似的Ll转换:

二进制XOR操作: (c ^ 0x20)

  1001100 ^ 0100000 ----------- 1101100 = 108 in decimal which is **ASCII** code of l 

您可以将.toUpperCase()直接应用于stringvariables或作为文本字段的属性。 例如: –

 String str; TextView txt; str.toUpperCase();// will change it to all upper case OR txt.append(str.toUpperCase()); txt.setText(str.toUpperCase()); 
 System.out.println(first.substring(0,1).toUpperCase()); System.out.println(last.substring(0,1).toUpperCase()); 

如果您的项目中包含apache commons lang jar,那么最简单的解决scheme就是:

 WordUtils.capitalize(Name) 

照顾你所有的肮脏的工作。 在这里看到j​​avadoc

或者,你也有一个大写的string(String)方法,它也会降低其他字符的情况。

既然你知道字符是小写的,你可以减去相应的ASCII值来使它们成为大写:

 char a = 'a'; a -= 32; System.out.println("a is " + a); //a is A 

这是一个供参考的ASCII表格

最简单的解决scheme – 改变第一行,让它做相反的事情:

 String lower = Name.toUpperCase (); 

当然,也有必要改变它的名字。