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()проверяет только обычный пробел и горизонтальную табуляцию.