Преобразование строчных букв в прописные без использования оператора if

Как я могу конвертировать строчные char в верхний регистр без использования оператора if?. Т.е. не используйте такой код:

if(c > 'a' && c < 'z')
{
    c = c-32;
}

4 ответа

Решение

Если вы уверены, что ваши символы в алфавитном порядке ASCII, то вы можете сбросить бит, который делает его строчным, так как разница между латинскими символами в нижнем и верхнем регистре составляет только один бит в таблице ASCII.

Вы можете просто сделать:

char upper = c & 0x5F;

Вы можете использовать это:

char uppercase = Character.toUpperCase(c);

Использование Character.toUpperCase(char):

Преобразует символьный аргумент в верхний регистр, используя информацию сопоставления регистра из файла UnicodeData.

Например, Character.toUpperCase('a') возвращается 'A',

Итак, полный код, который вам, вероятно, нужен:

c = Character.toUpperCase(c);

Вы можете использовать троичный оператор. Для вашего случая попробуйте что-то вроде этого:

c = (c >= 'a' && c <= 'z') ? c = c - 32 : c;
Другие вопросы по тегам