Преобразование строчных букв в прописные без использования оператора 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;