Оператор Equals действителен как для прописных, так и для строчных букв одной и той же буквы. - PullRequest
0 голосов
/ 16 сентября 2018

Имея var toCheck = a

В этом случае if(toCheck == 'a') возвращает true

Есть ли более короткий / лучший способ, чтобы эта операция возвращала true также для A? \

Что-то отличное от if(toCheck == 'a' || toCheck == 'A')

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Если вы ожидаете только символы, находящиеся в «нормальном» диапазоне (один байт - то есть ASCII):

if ((toChar & ~32) == 'A')

Единственная разница между

  • 'a': 01100001
  • 'A': 01000001

означает, что бит 5 включен, и, поскольку 2 5 равен 32, AND с отрицанием (перевернуть все биты) 32 маскирует все, кроме бита 5, превращая 'a' в 'A'.

0 голосов
/ 16 сентября 2018

Поскольку начиная с с символом , Character.toLowerCase может быть подходящим.

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

if (Character.toLowerCase(toCheck) == 'a') return true;

Или, наоборот, как указывает Эллиотт:

if (Character.toUpperCase(toCheck) == 'A') return true;
...