我该如何将变量f
和l
转换为大写字母?
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
和l
转换为大写字母?
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);
你可以使用Character#toUpperCase()
来实现。
char fUpper = Character.toUpperCase(f);
char lUpper = Character.toUpperCase(l);
然而,它仍有一些局限性,因为世界上已知的字符数量超出了16位char
范围所能容纳的范围。请参阅以下javadoc摘录:
注意:此方法无法处理补充字符。要支持所有Unicode字符(包括补充字符),请使用
toUpperCase(int)
方法。
不使用现有的实用程序,您可以尝试使用布尔运算进行以下转换:
转换为大写字母:
char upperChar = 'l' & 0x5f
转换为小写:
char lowerChar = 'L' ^ 0x20
工作原理:
二进制、十六进制和十进制表格:
------------------------------------------
| Binary | Hexadecimal | Decimal |
-----------------------------------------
| 1011111 | 0x5f | 95 |
------------------------------------------
| 100000 | 0x20 | 32 |
------------------------------------------
让我们来举个小写字母 l 转换成大写字母 L 的例子:
二进制 AND 运算:(l & 0x5f)
l
字符的ASCII码是 108,二进制表示为 01101100
。
1101100
& 1011111
-----------
1001100 = 76 in decimal which is **ASCII** code of L
同样的,L 到 l 的转换:
二进制异或运算:(L ^ 0x20)
1001100
^ 0100000
-----------
1101100 = 108 in decimal which is **ASCII** code of l
Character.toUpperCase()
这样的内置方法时。使用此方法的任何用户都应理解它不能处理任何非 ASCII 字符。 - Adam Hewittc | 0x20
而不是c ^ 0x20
来转换字符为小写。否则,如果字符已经是小写,你的代码会将其转换为大写。 - Steven Yue请查看 java.lang.Character
类,它提供了很多有用的方法来转换或测试字符。
f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
由于您知道这些字符为小写字母,因此您可以减去相应的ASCII值将它们变成大写字母:
char a = 'a';
a -= 32;
System.out.println("a is " + a); //a is A
这里提供一个ASCII表以供参考。
é
à
ö
û
ñ
等等。因此,如果原帖作者知道自己只需要处理这些字符,为了简单和性能,他可以坚持使用这种方法。 - SébastienSystem.out.println(first.substring(0,1).toUpperCase());
System.out.println(last.substring(0,1).toUpperCase());
String str;
TextView txt;
str.toUpperCase();// will change it to all upper case OR
txt.append(str.toUpperCase());
txt.setText(str.toUpperCase());
String name = "Your name variable";
char nameChar = Character.toUpperCase(name.charAt(0));
我认为您正在尝试使用空格作为分隔符,将句子中每个单词的首字母和末字母大写。
可以通过StringBuffer
实现:
public static String toFirstLastCharUpperAll(String string){
StringBuffer sb=new StringBuffer(string);
for(int i=0;i<sb.length();i++)
if(i==0 || sb.charAt(i-1)==' ' //for first character of string/each word
|| i==sb.length()-1 || sb.charAt(i+1)==' ') //for last character of string/each word
sb.setCharAt(i, Character.toUpperCase(sb.charAt(i)));
return sb.toString();
}