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

Arduino:Примеры/StringStartsWithEndsWith

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

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

Контакты:

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


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

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

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

  • Плата Arduino;

Цепь

Для этого примера никакой цепи выстраивать не нужно, надо просто при помощи USB-соединения подключить друг к другу компьютер и Arduino.

Arduino bb.png

Код

Функциями startsWith() и endsWith() можно воспользоваться, например, для того, чтобы узнать, какая последовательность символов идет в самом начале строки или какой символ расположен в самом конце. Кроме того, их можно использовать вместе с «фильтром», если искомый символ или подстрока находятся на известной нам позиции. Например,

  1. stringOne = "HTTP/1.1 200 OK";
  2.   if (stringOne.startsWith("200 OK", 9)) {
  3.     Serial.println("Got an OK from the server");
  4.   }

Функционально это то же самое, что и...

  1. stringOne = "HTTP/1.1 200 OK";
  2.   if (stringOne.substring(9) == "200 OK") {
  3.     Serial.println("Got an OK from the server");
  4.   }

Внимание! Если вы ищете позицию, находящуюся за пределами строки, то результаты могут быть не такими, как ожидалось. Например, если в примере выше вписать

  1. stringOne.startsWith("200 OK", 16)

, функция будет искать не в самой строке, а в памяти за ее пределами. Поэтому убедитесь, что индекс, который вы указываете в функциях startsWith и endsWith находится в диапазоне между 0 и значением, возвращенным функцией length().

  1. /*
  2.   Строковые функции StartsWith и EndsWith
  3.  
  4.   Несколько примеров использования функций startsWith() и endsWith() при работе со строками.
  5.  
  6.   Создан 27 июля 2010,
  7.   модифицирован 2 апреля 2012 Томом Иго (Tom Igoe).
  8.  
  9.  http://arduino.cc/en/Tutorial/StringStartsWithEndsWith
  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 startsWith() and endsWith():");
  23.   Serial.println();
  24. }
  25.  
  26. void loop() {
  27.   // Функция startsWith() проверяет, начинается ли строка с искомой подстроки:
  28.   String stringOne = "HTTP/1.1 200 OK";
  29.   Serial.println(stringOne);
  30.   if (stringOne.startsWith("HTTP/1.1")) {
  31.     Serial.println("Server's using http version 1.1");
  32.   }
  33.  
  34.   // Кроме того, при помощи функции startsWith() можно искать подстроки
  35.   // и в глубине строки, но для этого нужен «фильтр»,
  36.   // т.е. позиция, с которой, как предполагается, начинается искомая подстрока
  37.   // (в данном случае – 9-ая позиция):
  38.   stringOne = "HTTP/1.1 200 OK";
  39.   if (stringOne.startsWith("200 OK", 9)) {
  40.     Serial.println("Got an OK from the server");
  41.   }
  42.  
  43.   // Функция endsWith() проверяет, заканчивается ли строка с заданного символа:
  44.   String sensorReading = "sensor = ";
  45.   sensorReading += analogRead(A0);
  46.   Serial.print (sensorReading);
  47.   if (sensorReading.endsWith(0)) {
  48.     Serial.println(". This reading is divisible by ten");
  49.   }
  50.   else {
  51.     Serial.println(". This reading is not divisible by ten");
  52.  
  53.   }
  54.  
  55.   // Если условие верно, ничего не делаем:
  56.   while(true);
  57. }

См.также

  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 startsWith and endsWith Functions