将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
类似的L
到l
转换:
二进制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)
照顾你所有的肮脏的工作。 在这里看到javadoc
或者,你也有一个大写的string(String)方法,它也会降低其他字符的情况。
既然你知道字符是小写的,你可以减去相应的ASCII值来使它们成为大写:
char a = 'a'; a -= 32; System.out.println("a is " + a); //a is A
这是一个供参考的ASCII表格
最简单的解决scheme – 改变第一行,让它做相反的事情:
String lower = Name.toUpperCase ();
当然,也有必要改变它的名字。