Как проверить текст регистр c
Стандартная библиотека С++ также предоставляет ряд встроенных функций для работы с символами. В основном они связанны с проверкой символов:
- isupper(c) : проверяет, является ли c заглавной буквой, по умолчанию от «A» до «Z»
- islower(c) : проверяет, является ли c буквой нижнего регистра, по умолчанию от ‘a’ до ‘z’
- isalpha(c) : проверяет, является ли c алфавитным символом
- isdigit(c) : проверяет, является ли c цифрой от ‘0’ до ‘9’
- isxdigit(c) : проверяет, является ли c шестнадцатеричной цифрой, от ‘0’ до ‘9’, от ‘a’ до ‘f’ или от ‘A’ до ‘F’
- isalnum(c) : проверяет, является ли c алфавитно-цифровым символом; аналогично isisalpha(c) || isdigit(c)
- isspace(c) : проверяет, является ли c пробелом (‘ ‘), символом перевода строки (‘\n’), возвратом каретки (‘\r’), перевод страницы (‘\f’), горизонтальная (‘\t’) или вертикальная (‘\v’) табуляция
- isblank(c) : проверяет, является ли c пробелом (‘ ‘) или символом табуляция (‘\t’)
- ispunct(c) : проверяет, является ли c символом пунктуации (один из следующих: _ < >[ ] # ( ) < >% : ; ? * + — / ^ & | ~ ! » brush:cpp;»> #include int main() < unsigned char letter ; if (std::isupper(letter)) std::cout
Данные функции очень часто применяются при обработке строк. Рассмотрим прстейшую задачу — нам надо извлечь из некоторого текста (например, из строки «Phone number: +1(234)456-78-90» ) номер телефона:
#include #include int main() < std::string text ; std::string phone; // строка для хранения номера for(unsigned i<>; i < text.length(); i++) < // проверяем, является ли символ цифрой if(std::isdigit(text[i])) < // добавляем в строку номера телефона phone += text[i]; >> std::cout
Здесь проходим по всем символам текста и, если символ представляет цифру, то заносим его в строку phone. Другая задача — нам надо сравнить две строки вне зависимости от регистра. С одной стороны, мы могли бы использовать простую операцию сравнения ==, которая также может сравнивать строки. Но если мы попытаемся сравнить две строки, в которых хотя бы один символ отличается по регистру, то они будут не равны:
#include #include int main() < std::string word1 ; word1 = "hello"; std::string word2 ; if(word1 == word2) < std::cout else < std::cout >
Результат данной программы:
strings are not equal
Чтобы организовать сравнение без учета регистра, мы могли бы переводить символы в верхний или нижний регистр и сравнивать их:
#include #include int main() < std::string word1 ; std::string word2 ; bool is_equal; // равны ли строки if(word1.length() != word2.length()) < is_equal = false; >else < // сравниваем все символы for(unsigned i<>; i < word1.length(); i++) < // переводим символы в нижний регистр и сравниваем if(std::tolower(word1[i]) != std::tolower(word2[i])) < // если символы не равны, сбрасываем флаг равенства is_equal = false; break; // выходим из цикла >> > if(is_equal) < std::cout else < std::cout >
В данном случае сначала сравниваем длину строк, так как если длины не равны, то сами строки тоже не равны. Далее в цикле проходим по всем символам обоих строк, переводим их в нижний регистр и сравниваем. Если хотя бы одна пара соответствующих символов не равна, то сбрасываем флаг равенства is_equal в false и выходим из цикла, поскольку строки в этом случае будут уже не равны, и дальше нет смысла сравнивать символы. Результат данной программы:
HELLO and hello are equal
Проверка регистра русской буквы
Мне нужно проверить регистр русской буквы. Нашел вот такие функции: islower() и isupper()
Включил локализацию, но все равно выводит всегда нули.1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include #include using namespace std; int main(int argc, char **argv) { setlocale(LC_ALL, ""); string s = "Куку"; coutislower(s[2]); return 0; }
Проверял каждый элемент строки
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра
9. В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра. helpФункция преобразует буквы верхнего регистра в строке s в буквы нижнего регистра
Задание: strlwr char *strlwr( char *s); Функция преобразует буквы верхнего регистра в строке s.Заменить все буквы нижнего регистра в строке на буквы верхнего регистра
Определить функцию, заменяющую все буквы нижнего регистра в строке на буквы верхнего регистра.Как получить ASCII русской буквы
Здравствуйте, подскажите как получить код ASCII русской буквы? К примеру std::cout <<.как проверить регистр js
Для проверки регистра символа в JavaScript можно использовать методы строк .toUpperCase() и .toLowerCase() .
Например, чтобы проверить, является ли первая буква слова заглавной, можно сделать следующее:
const word = 'JavaScript'; if (word[0] === word[0].toUpperCase()) console.log('Первая буква заглавная'); > else console.log('Первая буква не заглавная'); >
Мы можем написать функцию, которая будет принимать в качестве параметра строку и возвращать булевое значение в зависимости от того, все ли символы в верхнем регистре или нет:
function isUpperCase(str) return str === str.toUpperCase(); > console.log(isUpperCase('HELLO')); // true console.log(isUpperCase('HeLlO')); // false
Мы используем метод toUpperCase() для преобразования строки в верхний регистр и затем сравниваем исходную строку с преобразованной версией с помощью оператора === . Функция возвращает true , если все символы в верхнем регистре, и false , если есть хотя бы один символ в нижнем регистре.
Проверка регистра букв
Здравствуйте, при создании программы возникла проблема:
Вводится любой текст, нужно определить количество заглавных букв. Как определить, заглавная ли буква?94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Определение регистра букв
Здравствуйте, возникла маленькая проблемка. Для её решения нужно определить в каком регистре.Замена регистра букв посимвольно
Вводится последовательность N символов. Вывести последовательность символов, заменяя каждую большую.Изменение регистра букв в файле
В файле test.in записан текст на английском языке. Как изменить регистр алфавитных символов.Проверка регистра русской буквы
Здравствуйте! Мне нужно проверить регистр русской буквы. Нашел вот такие функции: islower() и.7595 / 6418 / 2924
Регистрация: 14.04.2014
Сообщений: 27,946Добавлено через 1 минуту
Только для русских букв надо локализацию включить.Регистрация: 10.12.2013
Сообщений: 48а как весь текст проверить на наличие? Не по одной же букве проверять
Добавлено через 6 минут
просто у меня есть, допустим, такой код:1 2 3
char a[100] cout "Vvedite text" endl; cin >> a;
как к одной букве применить я понял, но к целому тексту.
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10Да напиши если буква лежит в диапазне
[‘A’,’Z’] || [‘А’..’Я’] то значит заглавная
7595 / 6418 / 2924
Регистрация: 14.04.2014
Сообщений: 27,946В цикле, разумеется. Каждый символ проверять.
Добавлено через 53 секунды
Qazan, это в C++ так можно делать?215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10Ты будешь пробегать по массиву
по буквенно1 2 3 4 5 6 7 8 9 10 11 12
a - Your Array n - Size of Your Array int count = 0; for(int i = 0;i n;i++) { if(('A' a[i] && a[i] 'Z') { count++; } } std::cout <" MyCount : "
; Добавлено через 35 секунд
nmcf, Я образно
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
Fantasmaforia,1 2 3 4 5 6 7 8 9 10 11
#include #include #include int main () { const std::string text = "Some text. With two uppercase letters."; size_t uppercase = std::count_if(text.cbegin(), text.cend(), [](const char& a){ return std::isupper(a); }); std::cout "Uppercase letters number: " uppercase ", lowercase letters number: " text.size() - uppercase std::endl; }
1 2 3
ruslan@TFTM-K53TA:~/Programming/c++/cyberforum$ make && ./main clang++ main.cpp -o main -std=c++11 -W Uppercase letters number: 2, lowercase letters number: 36