isWhitespace()
isWhitespace() проверяет, является ли символ пробелом или горизонтальной табуляцией ('\t'), возвращая true — удобно при разборе текста из Serial.
Полная статья
Описание
isWhitespace() проверяет, относится ли переданный символ к «пустым» символам — обычному пробелу (' ') или горизонтальной табуляции ('\t'). Это удобно при разборе текстовых данных: например, когда нужно пропустить разделители между словами или числами, полученными через Serial.
Функция возвращает true, если символ — пробел или горизонтальная табуляция ('\t'), и false в любом другом случае.
Синтаксис
isWhitespace(thisChar)
Параметры
thisChar: символ, который нужно проверить. Допустимый тип данных: char.
Возвращает
Функция возвращает true, если переданный символ является пробелом или табуляцией. Если символ — что угодно другое (буква, цифра, знак препинания, перевод строки и т. д.), результат будет false.
Важно: символы перевода строки (
'\n') и возврата каретки ('\r') не считаются пробельными с точки зрения этой функции, хотя визуально они тоже «пустые». Если вам нужно отфильтровать и их, используйте дополнительные проверки.
Пример кода
char myChar = '\t'; // попробуйте с 'a' — символ без пробела
void setup() {
Serial.begin(9600);
if (isWhitespace(myChar)) { // проверяет, является ли myChar пробельным символом
Serial.println("The character is a space or tab");
} else {
Serial.println("The character is not a space or tab");
}
}
void loop() {
}
Где применяется
- Разбор строк из Serial. Когда данные приходят в виде слов или чисел, разделённых пробелами и табуляцией,
isWhitespace()помогает найти границы токенов. - Очистка входных данных. Перед обработкой строки можно пропустить ведущие пробелы и табуляции, итерируясь по символам до первого «не пустого».
- Простой парсер команд. При чтении команд с клавиатуры через Serial удобно игнорировать лишние пробелы между аргументами.
Практические замечания
- Функция работает с одним символом типа
char— не со строкой целиком. Для проверки всей строки нужно перебирать символы в цикле. '\n'и'\r'не входят в «пробельные» по версииisWhitespace(). Если нужно отфильтровать и их, проверяйте отдельно.- Функция не блокирует выполнение программы и не обращается к аппаратуре — это простая проверка значения символа, работающая мгновенно.
- Если символ приходит из
Serial.read(), он возвращается какint(-1при отсутствии данных). Перед передачей вisWhitespace()убедитесь, что данные действительно есть, и только затем приводите значение кchar.