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

isSpace()

isSpace() проверяет, является ли символ пробельным: пробел, табуляция, '\n', '\r', '\f' или '\v' — возвращает true, иначе false.

Полная статья

Описание

isSpace() определяет, относится ли переданный символ к категории пробельных. Функция возвращает true, если символ является одним из следующих:

  • обычный пробел (' ')
  • перевод страницы ('\f')
  • перевод строки ('\n')
  • возврат каретки ('\r')
  • горизонтальная табуляция ('\t')
  • вертикальная табуляция ('\v')

Эти символы объединяет одно свойство: они не несут видимого содержимого, а лишь управляют форматированием или разделяют слова и строки.

Синтаксис

isSpace(thisChar)

Параметры

thisChar — символ для проверки. Допустимый тип данных: char.

Возвращает

Функция возвращает true, если переданный символ является пробельным. Если символ не входит в перечисленный набор, возвращается false.

Пример кода

char myChar = '\n';  // попробуйте с 'a' — символом без пробела

void setup() {
  Serial.begin(9600);

  if (isSpace(myChar)) {  // проверяет, является ли myChar пробельным символом
    Serial.println("The character is white-space");
  } else {
    Serial.println("The character is not white-space");
  }
}

void loop() {
}

Где применяется

  • Разбор текстовых команд: при чтении строк из Serial удобно пропускать пробелы и табуляции между токенами, прежде чем обрабатывать значимые символы.
  • Очистка входных данных: если пользователь вводит команду с лишними пробелами или переносами строк, isSpace() помогает отфильтровать их перед разбором.
  • Подсчёт слов: можно определить границы слов, проверяя, является ли текущий символ пробельным, а предыдущий — нет.
  • Синтаксический анализ файлов: при чтении данных с SD-карты функция помогает игнорировать незначимые разделители между полями.

Практические замечания

  • Функция работает с типом char. Если вы читаете символы через Serial.read(), она возвращает int: значение -1 означает, что данных пока нет. Проверяйте это перед передачей символа в isSpace().
  • Символ '\0' (нулевой терминатор строки) не является пробельным, и isSpace() вернёт false для него.
  • Функция не учитывает локаль: она проверяет только стандартный набор ASCII-символов, перечисленных выше.
  • Если нужно проверить несколько символов подряд, удобно использовать isSpace() в условии цикла while для перемотки через разделители.
  • Не путайте isSpace() и isWhitespace() в Arduino: isSpace() шире и включает переводы строк, возврат каретки и табуляции, а isWhitespace() проверяет только обычный пробел и горизонтальную табуляцию.

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