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);
我如何将F和L变量转换为大写。
Answers:
您可以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
转换:
二进制XOR操作: (L ^ 0x20)
1001100
^ 0100000
-----------
1101100 = 108 in decimal which is **ASCII** code of l
Character.toUpperCase()
。任何对此的用户都应该理解,它将不会处理任何非ASCII的内容。
c | 0x20
代替c ^ 0x20
小写字母。否则,如果字符已经是小写字母,则您的代码会将其转换为大写字母
看一看java.lang.Character
该类,它提供了许多有用的方法来转换或测试字符。
System.out.println(first.substring(0,1).toUpperCase());
System.out.println(last.substring(0,1).toUpperCase());
由于您知道字符是小写的,因此可以减去相应的ASCII值以使其大写:
char a = 'a';
a -= 32;
System.out.println("a is " + a); //a is A
这是一个ASCII表供参考
é
à
ö
û
ñ
……因此,如果OP知道他只需要处理此类字符,则可以坚持使用此方法为了简单和性能。
我认为您正在尝试使用空格作为定界符来大写句子中每个单词的第一个和最后一个字符。
可以通过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();
}