Arduino:Примеры/StringLengthTrim

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

Перевод: Максим Кузьмин (Cubewriter) Перевел 364226 статей для сайта.</br>Контакты:</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 символов, чтобы уместить ее в текстовое сообщение. Это можно сделать следующим образом:

 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

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