Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/StringLengthTrim

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

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

  • Плата Arduino;

Цепь

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

Arduino bb.png

Код

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

  1. /*
  2.   Вычисление длины строки при помощи функции Length
  3.  
  4.   Несколько примеров того, как функция length() может пригодиться при работе со строками.
  5.   Откройте окно Serial Monitor и начните отсылать символы, чтобы увидеть результат.
  6.  
  7.  Создан 1 августа 2010 Томом Иго (Tom Igoe)
  8.  
  9.  http://arduino.cc/en/Tutorial/StringLengthTrim
  10.  
  11.  Этот код не защищен авторским правом.
  12.  */
  13. String txtMsg = "";                         // строка для входящего текста
  14. int lastStringLength = txtMsg.length();     // предыдущая длина строки
  15.  
  16. void setup() {
  17.   // Инициализируем последовательную передачу данных и ждем открытия порта:
  18.   Serial.begin(9600);
  19.   while (!Serial) {
  20.     ; // ждем, когда подключится порт (требуется только для Leonardo)
  21.   }
  22.  
  23.   // Отсылаем вступительную часть:
  24.   Serial.println("\n\nString  length():");
  25.   Serial.println();
  26. }
  27.  
  28. void loop() {
  29.   // Добавляем к строке все входящие символы:
  30.   while (Serial.available() > 0) {
  31.     char inChar = Serial.read();
  32.     txtMsg += inChar;
  33.   }
  34.  
  35.   // Выводим сообщение и отмечаем, если оно изменилось:
  36.   if (txtMsg.length() != lastStringLength) {
  37.     Serial.println(txtMsg);
  38.     Serial.println(txtMsg.length());
  39.     // Если строка длиннее 140 символов, жалуемся:
  40.     if (txtMsg.length() < 140) {
  41.       Serial.println("That's a perfectly acceptable text message");
  42.     }
  43.     else {
  44.       Serial.println("That's too long for a text message.");
  45.     }
  46.     // Отмечаем длину строки для следующего прохода через цикл:
  47.     lastStringLength = txtMsg.length();
  48.   }
  49. }

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

  1. /*
  2.   Использование функций Length и Trim
  3.   Несколько примеров применения функций length() и trim() при работе со строками.
  4.  
  5.   Создан 27 июля 2010,
  6.   Модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
  7.  
  8.  http://arduino.cc/en/Tutorial/StringLengthTrim
  9.  
  10.   Этот код не защищен авторским правом.
  11.  */
  12.  
  13. void setup() {
  14.   // Инициализируем последовательную передачу данных и ждем, когда порт откроется:
  15.   Serial.begin(9600);
  16.   while (!Serial) {
  17.     ; // ждем подключения последовательного порта (нужно только для Leonardo)
  18.   }
  19.  
  20.   // Отсылаем вступительную часть:
  21.   Serial.println("\n\nString  length() and trim():");
  22.   Serial.println();
  23. }
  24.  
  25. void loop() {
  26.   // Задаем строку с пустыми символами в конце (т.е. с пробельными символами):
  27.   String stringOne = "Hello!       ";
  28.   Serial.print(stringOne);
  29.   Serial.print("<--- end of string. Length: ");
  30.   Serial.println(stringOne.length());
  31.  
  32.   // Делаем строке «обрезание»:
  33.   stringOne.trim();
  34.   Serial.print(stringOne);
  35.   Serial.print("<--- end of trimmed string. Length: ");
  36.   Serial.println(stringOne.length());
  37.  
  38.   // Пока условие верно, ничего не делаем:
  39.   while(true);
  40. }

См.также

  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

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

  1. String length() and trim() Commands