Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Строки chevron_right Как использовать String length()

Как использовать 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.

Как проверить результат

  1. Загрузите скетч на плату.
  2. Откройте монитор порта (Ctrl+Shift+M).
  3. Введите короткое слово, например Hello, и нажмите «Отправить» — скетч ответит подтверждением.
  4. Введите строку длиннее 140 символов — скетч сообщит, что ввод слишком длинный.
  5. Попробуйте пустую строку — length() вернёт 0.

Последнее обновление: 27.08.2015, SM