سؤال

How I can convert a lowercase char to uppercase without using an if statement?. I.e. don't use code like this:

if(c > 'a' && c < 'z')
{
    c = c-32;
}
هل كانت مفيدة؟

المحلول 3

If you are sure that your characters are ASCII alphabetic, then you can unset the bit that makes it lowercase, since the difference between the lowercase and uppercase latin chars is only one bit in the ASCII table.

You can simply do:

char upper = c & 0x5F;

نصائح أخرى

You can use this:

char uppercase = Character.toUpperCase(c);

Use Character.toUpperCase(char):

Converts the character argument to uppercase using case mapping information from the UnicodeData file.

For example, Character.toUpperCase('a') returns 'A'.

So the full code you probably want is:

c = Character.toUpperCase(c);

You can use the ternary operator. For your case, try something like this:

c = (c >= 'a' && c <= 'z') ? c = c - 32 : c;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top