Как проверить текст регистр c
Перейти к содержимому

Как проверить текст регистр c

  • автор:

Как проверить текст регистр 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *