Arduino:Примеры/StringLengthTrim

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Строковые функции Length и Trim [1]

Функция length() позволяет рассчитать длину строки, а trim() – как бы обрезать ее, удалив те или иные символы. В данном примере показывается, как эти функции работают.

Необходимое оборудование

  • Плата Arduino;

Цепь

Для этого примера цепь строить не нужно. Просто подключите Arduino к компьютеру (через USB).

Arduino bb.png

Код

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

/*
  Вычисление длины строки при помощи функции Length
 
  Несколько примеров того, как функция length() может пригодиться при работе со строками.
  Откройте окно Serial Monitor и начните отсылать символы, чтобы увидеть результат. 
 
 Создан 1 августа 2010 Томом Иго (Tom Igoe)
 
 http://arduino.cc/en/Tutorial/StringLengthTrim
 
 Этот код не защищен авторским правом.
 */
String txtMsg = "";                         // строка для входящего текста
int lastStringLength = txtMsg.length();     // предыдущая длина строки

void setup() {
  // Инициализируем последовательную передачу данных и ждем открытия порта:
  Serial.begin(9600);
  while (!Serial) {
    ; // ждем, когда подключится порт (требуется только для Leonardo)
  }

  // Отсылаем вступительную часть:
  Serial.println("\n\nString  length():");
  Serial.println();
}

void loop() {
  // Добавляем к строке все входящие символы:
  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();
  }
}

Функция trim() полезна, когда вы знаете, что на переднем или заднем краях строки разместилось несколько пробельных символов, и вы хотите от них избавиться. Пробельные символы – это те, которые занимают определенное место, но их не видно. В их число входят одинарный пробел (32 в ASCII-кодировке), Tab (9), вертикальный Tab (11), символ перевода страницы (12), символ разрыва строки (13) и символ новой строки (10). Пример ниже демонстрирует строку с пробельными символами – до и после «обрезки».

/*
  Использование функций Length и Trim
  Несколько примеров применения функций length() и trim() при работе со строками.
 
  Создан 27 июля 2010,
  Модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
 
 http://arduino.cc/en/Tutorial/StringLengthTrim
 
  Этот код не защищен авторским правом.
 */

void setup() {
  // Инициализируем последовательную передачу данных и ждем, когда порт откроется:
  Serial.begin(9600);
  while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для Leonardo)
  }

  // Отсылаем вступительную часть:
  Serial.println("\n\nString  length() and trim():");
  Serial.println();
}

void loop() {
  // Задаем строку с пустыми символами в конце (т.е. с пробельными символами):
  String stringOne = "Hello!       ";
  Serial.print(stringOne);
  Serial.print("<--- end of string. Length: ");
  Serial.println(stringOne.length());

  // Делаем строке «обрезание»:
  stringOne.trim();
  Serial.print(stringOne);
  Serial.print("<--- end of trimmed string. Length: ");
  Serial.println(stringOne.length());

  // Пока условие верно, ничего не делаем:
  while(true);
}

См.также

  1. String object
  2. StringConstructors
  3. StringAdditionOperator
  4. StringIndexOf
  5. StringAppendOperator
  6. StringLengthTrim
  7. StringCaseChanges
  8. StringReplace
  9. StringCharacters
  10. StringStartsWithEndsWith
  11. StringComparisonOperators
  12. StringSubstring

Внешние ссылки