Converting a char to uppercase
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());
Related videos on Youtube
shep
Updated on July 05, 2022Comments
-
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 over 13 yearswhich part of the answers to your previous question you didn't understand? My answer there contains an answer to this question.
-
charles-allen over 6 years@shep - Can you accept BalusC's answer? It will help future searchers.
-
-
Anthony Forloney over 13 years+1 I like the answers that providers the user with a reference to go seek the answer
-
Visruth almost 11 yearsThe link you provided gives 404 error!!!! can you correct it??
-
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 about 9 yearsThis 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 over 8 yearsActually 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 over 8 yearsDoing 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 over 7 yearsCan you explain your answer?
-
Likhith Kumar over 7 yearsfirst.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 over 6 yearsI'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 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 about 6 yearsI think it should be
c | 0x20
instead ofc ^ 0x20
for lower case. Otherwise, if the character is already lower case, your code will convert it to uppercase