81
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 变量转换为大写。

4

10 回答 10

151

你可以用Character#toUpperCase()这个。

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

char然而,它有一些限制,因为世界知道比 16 位范围所能容纳的字符多得多。另请参见javadoc的以下摘录:

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

于 2010-09-12T20:20:58.680 回答
41

您可以尝试使用布尔运算进行以下转换,而不是使用现有的实用程序:

转大写:

 char upperChar = 'l' & 0x5f

小写:

   char lowerChar = 'L' ^ 0x20

这个怎么运作:

二进制、十六进制和十进制表:

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

我们举个小lL转换的例子:

二元与运算:(l & 0x5f)

l字符具有ASCII 108 并且01101100是二进制表示。

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

同样的Ltol转换:

二元异或运算:(L ^ 0x20)

   1001100
^  0100000
-----------
   1101100 = 108 in decimal which is **ASCII** code of l
于 2016-08-01T19:49:58.480 回答
18

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

于 2010-09-12T20:20:55.100 回答
15
f = Character.toUpperCase(f);
l = Character.toUpperCase(l);
于 2010-09-12T20:20:38.703 回答
5

由于您知道字符是小写的,因此您可以减去相应的 ASCII 值以使它们大写:

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

这是一个ASCII表供参考

于 2015-02-08T02:42:06.040 回答
5
System.out.println(first.substring(0,1).toUpperCase()); 
System.out.println(last.substring(0,1).toUpperCase());
于 2017-01-08T05:25:30.147 回答
2

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

WordUtils.capitalize(Name)

为您处理所有肮脏的工作。在此处查看 javadoc

或者,您还有一个 capitalizeFully(String) 方法,它也将其余字符小写。

于 2010-09-12T20:32:33.547 回答
2

您可以将 .toUpperCase() 直接应用于字符串变量或作为文本字段的属性。前任: -

String str;
TextView txt;

str.toUpperCase();// will change it to all upper case OR
txt.append(str.toUpperCase());
txt.setText(str.toUpperCase());
于 2016-04-25T15:46:54.170 回答
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();
}
于 2017-12-07T07:57:33.427 回答
-1

最简单的解决方案 - 更改第一行,让它做相反的事情:

String lower = Name.toUpperCase ();

当然,改名也是值得的。

于 2010-09-12T20:22:00.743 回答