Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

is upper для русского языка

#cpp #строки #кириллица


Как проверить первый символ переменной типа std::string на принадлежность к верхнему
регистру с учетом правил русского языка?
Есть что-то готовое или как это сделать ручками?
    


Ответы

Ответ 1



Можно сделать ручками на основе кодов символов Для начала проверяем, лежит ли символ в диапазоне заглавных букв: (letter >= 1040 && letter <= 1071) || letter == 1025 letter == 1025 — отдельная проверка для буквы Ё. Если да, то ничего не делаем, а если нет, то проверяем буква ли это вообще (вдруг там число в начале строки). letter => 1072 && letter <= 1103 // (пока без учёта буквы ё) Напомню, что, когда к типу char применяются операции сравнения или арифметические операции, то работа идёт именно с кодом символа, а не с самим символом. Итак, мы выяснили, что наш символ — это буква в нижнем регистре. Чтобы перевести её в upper case достаточно уменьшить её код на 32, что прекрасно видно из таблицы выше( код A — 1040, код a — 1072; 1072-1040 = 32). char letter = 'a'; letter -= 32; Теперь letter = 'A', что нам необходимо. Осталось отдельно обработать случай с буквой ё, когда: letter == 1105

Комментариев нет:

Отправить комментарий