Как использовать String length()
Узнайте, как получить длину строки с помощью метода length() и использовать это для проверки пользовательского ввода через Serial Monitor.
Метод length() позволяет узнать длину объекта Strings — то есть количество символов в строке. Это базовая, но очень полезная операция: она помогает проверять, не вышел ли пользователь за допустимые пределы ввода, формировать условия и управлять поведением программы в зависимости от размера данных.
В этом уроке мы разберём, как применить length() для анализа строки, полученной из монитора порта Arduino IDE.
Необходимое оборудование
Схема подключения
Внешние компоненты для этого примера не нужны — достаточно подключить плату к компьютеру через USB и открыть окно монитора порта в Arduino IDE.

Плата Arduino UNO — дополнительные компоненты не подключаются. Используется только встроенный Serial-интерфейс.
Код
Метод length() возвращает количество символов в строке. Это число часто нужно для проверки ограничений. Например, если вы хотите убедиться, что сообщение не превышает 140 символов (лимит SMS), логика будет такой:
/*
String length()
Примеры использования length() со строками String.
Откройте Serial Monitor и начните отправлять символы, чтобы увидеть результат.
создан 1 авг 2010
автор Tom Igoe
Этот пример кода находится в общественном достоянии.
https://www.arduino.cc/en/Tutorial/StringLengthTrim
*/
String txtMsg = ""; // строка для входящего текста
unsigned int lastStringLength = txtMsg.length(); // предыдущая длина строки String
void setup() {
// Открываем последовательный порт и ждём подключения:
Serial.begin(9600);
while (!Serial) {
; // ожидание подключения к последовательному порту. Нужно только для native USB
}
// отправляем вступление:
Serial.println("\n\nString length():");
Serial.println();
}
void loop() {
// добавляем все входящие символы в строку String:
while (Serial.available() > 0) {
char inChar = Serial.read();
txtMsg += inChar;
}
// выводим сообщение и уведомление, если оно изменилось:
if (txtMsg.length() != lastStringLength) {
Serial.println(txtMsg);
Serial.println(txtMsg.length());
// если строка длиннее 140 символов — сообщаем об этом:
if (txtMsg.length() < 140) {
Serial.println("That's a perfectly acceptable text message");
} else {
Serial.println("That's too long for a text message.");
}
// запоминаем длину для следующей итерации цикла:
lastStringLength = txtMsg.length();
}
}
Как это работает
Когда пользователь вводит текст в монитор порта и нажимает «Отправить», скетч считывает строку и вызывает length(), чтобы определить её длину. Если строка укладывается в допустимый предел — скетч подтверждает это сообщением. Если строка слишком длинная — пользователь получает предупреждение.
Это удобный паттерн: проверять входные данные сразу при получении, до того как они попадут в основную логику программы.
Практические замечания
length()считает именно символы строки, не включая завершающий нулевой байт'\0', как это бывает в языке C.- Если вы используете
Serial.readString()илиSerial.readStringUntil('\n'), в конце строки может оказаться символ перевода строки'\n'или возврата каретки'\r'. Это увеличит длину на 1–2 символа. Чтобы избежать путаницы, настройте в мониторе порта режим окончания строки «Нет конца строки» или обрезайте лишние символы методомtrim(). - Метод
length()работает только с объектами типаString. Для массивовchar[]используйте функциюstrlen()из стандартной библиотеки C.
Типичные ошибки
- Монитор порта не открыт — скетч ждёт ввода, но ничего не происходит. Убедитесь, что окно монитора открыто и скорость порта совпадает с той, что указана в
Serial.begin(). - Строка всегда длиннее ожидаемого — скорее всего, в конце есть символы
\rили\n. ИспользуйтеinputString.trim()перед проверкой длины. - Путаница с индексами — помните, что
length()возвращает количество символов, а индексы в строке начинаются с0. Последний символ находится по индексуlength() - 1.
Как проверить результат
- Загрузите скетч на плату.
- Откройте монитор порта (Ctrl+Shift+M).
- Введите короткое слово, например
Hello, и нажмите «Отправить» — скетч ответит подтверждением. - Введите строку длиннее 140 символов — скетч сообщит, что ввод слишком длинный.
- Попробуйте пустую строку —
length()вернёт0.
Последнее обновление: 27.08.2015, SM