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

Arduino:Примеры/StringSubstring

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

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

Контакты:

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


Строковая функция Substring [1]

Функция substring(), простите за тавтологию, функционально близка к функциям charAt(), startsWith() и endsWith(). Она позволяет искать в строке определенные символы.

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

  • Плата Arduino;

Цепь

Цепь для этого примера не нужна, просто подключите Arduino к компьютеру (при помощи USB).

Arduino bb.png

Код

Функция substring(), в которой задан всего один параметр, ищет от заданной позиции и до конца строки. То есть подразумевается, что искомая подстрока длится до самого конца строки. Например,

  1. String stringOne = "Content-Type: text/html";
  2.  
  3.   // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  4.   if (stringOne.substring(19) == "html") {
  5.    }

Этот код верен, тогда как этот:

  1. String stringOne = "Content-Type: text/html";
  2.  
  3.   // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  4.   if (stringOne.substring(19) == "htm") {
  5.    }

...не верен, поскольку после подстроки «htm» в строке еще присутствует символ «l».

При этом substring() с двумя параметрами ищет от одной заданной позиции и до другой. Например,

  1. String stringOne = "Content-Type: text/html";
  2.  
  3.   // Вы также можете искать подстроки, находящиеся в центре строки:
  4.   if (stringOne.substring(14,18) == "text") {
  5.  
  6.   }

В этом фрагменте функция ищет слово «text», находящееся с 14-ой позиции по 18-ую.

Внимание! Убедитесь, что заданные вами позиции находятся в пределах строки, иначе такой код может повлечь непредвиденные результаты. Эту ошибку бывает особенно трудно найти, если в substring() указано два параметра – когда первый из них меньше длины строки, а второй нет.

  1. /*
  2.   Строковая функция Substring
  3.  
  4.   Несколько примеров использования функции substring() при работе со строками.
  5.  
  6.   Создан 27 июля 2010,
  7.   модифицирован 2 апреля 2012 Заком Эвеландом (Zach Eveland).
  8.  
  9.   http://arduino.cc/en/Tutorial/StringSubstring
  10.  
  11.   Этот код не защищен авторским правом.
  12.  */
  13.  
  14. void setup() {
  15.   // Инициализируем последовательную передачу данных и ждем открытия порта:
  16.   Serial.begin(9600);
  17.   while (!Serial) {
  18.     ; // ждем, когда подключится последовательный порт (только для Leonardo)
  19.   }
  20.  
  21.   // Отсылаем вступительную часть:
  22.   Serial.println("\n\nString  substring():");
  23.   Serial.println();
  24. }
  25.  
  26. void loop() {
  27.   // Задаем строку:
  28.   String stringOne = "Content-Type: text/html";
  29.   Serial.println(stringOne);
  30.  
  31.   // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  32.   if (stringOne.substring(19) == "html") {
  33.     Serial.println("It's an html file");
  34.   }
  35.   // Вы также можете искать подстроки, находящиеся в центре строки:
  36.   if (stringOne.substring(14,18) == "text") {
  37.     Serial.println("It's a text-based file");
  38.   }
  39.  
  40.   // Пока условие верно, ничего не делаем:
  41.   while(true);
  42. }

См.также

  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 substring Function