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变量转换为大写。
答案 0 :(得分:132)
您可以使用Character#toUpperCase()
。
char fUpper = Character.toUpperCase(f);
char lUpper = Character.toUpperCase(l);
但是它有一些限制,因为全世界都知道比16比特char
范围内更多的字符。另请参阅以下javadoc的摘录:
注意:此方法无法处理supplementary characters。要支持所有Unicode字符(包括增补字符),请使用
toUpperCase(int)
方法。
答案 1 :(得分:24)
您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:
改为大写:
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
转换:
二进制XOR操作:(L ^ 0x20)
1001100
^ 0100000
-----------
1101100 = 108 in decimal which is **ASCII** code of l
答案 2 :(得分:17)
看一下java.lang.Character
类,它提供了很多有用的方法来转换或测试字符。
答案 3 :(得分:13)
f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
答案 4 :(得分:4)
System.out.println(first.substring(0,1).toUpperCase());
System.out.println(last.substring(0,1).toUpperCase());
答案 5 :(得分:2)
如果你在项目中包含apache commons lang jar而不是最简单的解决方案:
WordUtils.capitalize(Name)
为您处理所有肮脏的工作。 请参阅javadoc here
或者,你也有一个capitalizeFully(String)方法,它也可以减少其余字符的大小写。
答案 6 :(得分:2)
由于你知道字符是小写的,你可以减去相应的ASCII值使它们大写:
char a = 'a';
a -= 32;
System.out.println("a is " + a); //a is A
以下是ASCII table供参考
答案 7 :(得分:2)
您可以将.toUpperCase()直接应用于String变量,也可以将其作为属性应用于文本字段。例如: -
String str;
TextView txt;
str.toUpperCase();// will change it to all upper case OR
txt.append(str.toUpperCase());
txt.setText(str.toUpperCase());
答案 8 :(得分: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();
}
答案 9 :(得分:-1)
最简单的解决方案 - 更改第一行,让它做相反的事情:
String lower = Name.toUpperCase ();
当然,也值得改名。