Converting a char to uppercase

351,489

Solution 1

You can use Character#toUpperCase() for this.

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

It has however some limitations since the world is aware of many more characters than can ever fit in 16bit char range. See also the following excerpt of the javadoc:

Note: This method cannot handle supplementary characters. To support all Unicode characters, including supplementary characters, use the toUpperCase(int) method.

Solution 2

Instead of using existing utilities, you may try below conversion using boolean operation:

To upper case:

 char upperChar = 'l' & 0x5f

To lower case:

   char lowerChar = 'L' ^ 0x20

How it works:

Binary, hex and decimal table:

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

Let's take an example of small l to L conversion:

The binary AND operation: (l & 0x5f)

l character has ASCII 108 and 01101100 is binary represenation.

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

Similarly the L to l conversion:

The binary XOR operation: (L ^ 0x20)

   1001100
^  0100000
-----------
   1101100 = 108 in decimal which is **ASCII** code of l

Solution 3

Have a look at the java.lang.Character class, it provides a lot of useful methods to convert or test chars.

Solution 4

f = Character.toUpperCase(f);
l = Character.toUpperCase(l);

Solution 5

System.out.println(first.substring(0,1).toUpperCase()); 
System.out.println(last.substring(0,1).toUpperCase());
Share:
351,489

Related videos on Youtube

shep
Author by

shep

Updated on July 05, 2022

Comments

  • shep
    shep almost 2 years
    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);
    

    how would i get the F and L variables converted to uppercase.

    • Bozho
      Bozho over 13 years
      which part of the answers to your previous question you didn't understand? My answer there contains an answer to this question.
    • charles-allen
      charles-allen over 6 years
      @shep - Can you accept BalusC's answer? It will help future searchers.
  • Anthony Forloney
    Anthony Forloney over 13 years
    +1 I like the answers that providers the user with a reference to go seek the answer
  • Visruth
    Visruth almost 11 years
    The link you provided gives 404 error!!!! can you correct it??
  • ebt
    ebt over 10 years
    -1, if we dragnet for students we remove one of SO main benefits. Not spending inordinate amounts of time following peoples nested references across broken links.
  • Mike Laren
    Mike Laren about 9 years
    This only works if the string is composed exclusively of ASCII characters. Languages like French, Greek, Spanish, Turkish, etc, have non-ASCII characters with upper/lower forms. This approach wouldn't work in those cases...
  • Sébastien
    Sébastien over 8 years
    Actually this basic approach does work for the most common non-ASCII characters in French, Spanish, German... e.g. é à ö û ñ ... So if the OP knows that he will only have to deal with such characters, he can stick to this method for the sake of simplicity and performance.
  • Floyd
    Floyd over 8 years
    Doing calculations with characters to change the case is one of the worst habits, and so not 21st century! There is more than ascii chars!
  • soundslikeodd
    soundslikeodd over 7 years
    Can you explain your answer?
  • Likhith Kumar
    Likhith Kumar over 7 years
    first.substring(0,1) will retrieve substring which is at 0 index of string and then applying toUpperCase method to that string which will give you the first character in that string as uppercase
  • Adam Hewitt
    Adam Hewitt over 6 years
    I'm honestly shocked that this has 7 votes. While I applaud the clever approach, being clever rarely leads to maintainable code, especially when used in place of a built-in method like Character.toUpperCase(). Any users of this should understand it will not handle anything non-ASCII.
  • Rahul Sharma
    Rahul Sharma over 6 years
    @AdamHewitt this approach work with non-ASCII chars as well e.g. '250', however, few non-ASCII characters wouldn't give expected results.Your point is correct that users should understand right usage of this approach and it should be used mainly for English alphabets.
  • Steven Yue
    Steven Yue about 6 years
    I think it should be c | 0x20 instead of c ^ 0x20 for lower case. Otherwise, if the character is already lower case, your code will convert it to uppercase