isDigit()
isDigit() проверяет, является ли символ char десятичной цифрой от '0' до '9', и возвращает true или false — удобно при разборе строк и валидации ввода.
Полная статья
Описание
isDigit() проверяет, является ли переданный символ десятичной цифрой — то есть одним из символов '0'...'9'. Это удобно при разборе строк, поступающих от пользователя или внешнего устройства: например, чтобы отделить числовую часть от букв и знаков препинания.
Функция возвращает true, если символ является цифрой, и false в противном случае.
Синтаксис
isDigit(thisChar)
Параметры
thisChar: символ типа char, который нужно проверить.
Возвращает
Функция возвращает true, если thisChar — это символ цифры ('0'–'9'). Если символ является буквой, пробелом, знаком препинания или любым другим нецифровым символом, возвращается false.
Пример кода
char myChar = '8'; // проверяем с 'n' — нецифровым символом
void setup() {
Serial.begin(9600);
if (isDigit(myChar)) { // проверяем, является ли myChar цифрой
Serial.println("The character is a number");
}
else {
Serial.println("The character is not a number");
}
}
void loop() {
}
Где применяется
- Разбор пользовательского ввода через Serial: когда пользователь вводит команду вроде
"LED5", можно пройтись по символам строки и выделить числовую часть. - Валидация данных от датчиков или модулей: если модуль передаёт строку с числом,
isDigit()помогает убедиться, что символ действительно можно преобразовать в цифру перед вызовомtoInt()или аналогичных функций. - Парсинг протоколов: при разборе текстовых протоколов (NMEA, AT-команды) нужно отличать числовые поля от буквенных.
Практические замечания
isDigit()проверяет именно символ-цифру, а не числовое значение. Символ'5'— это цифра, а целое число5— нет: в ASCII число5соответствует управляющему коду0x05, тогда как символ'5'имеет код0x35.- Функция не учитывает знак: символы
'+'и'-'не считаются цифрами. - Символ
'.'тоже не является цифрой с точки зренияisDigit(), даже если вы разбираете число с плавающей точкой. - Удобно использовать в цикле по символам строки типа
Stringили массиваchar[], обращаясь к каждому элементу по индексу. - Если нужно проверить сразу несколько категорий символов, обратите внимание на родственные функции:
isAlpha(),isAlphaNumeric(),isSpace()и другие из той же группы.