Главная chevron_right Функции chevron_right Символы chevron_right isWhitespace()

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.

Полезные материалы