Arduino:Примеры/StringSubstring: различия между версиями

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


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
String stringOne = "Content-Type: text/html";
String stringOne = "Content-Type: text/html";


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


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
String stringOne = "Content-Type: text/html";
String stringOne = "Content-Type: text/html";


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


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
String stringOne = "Content-Type: text/html";
String stringOne = "Content-Type: text/html";


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


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
   Строковая функция Substring
   Строковая функция Substring

Текущая версия от 21:42, 25 марта 2023

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


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

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

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

  • Плата Arduino;

Цепь

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

Рис. 1. Для этого примера необходима только плата Arduino.
Рис. 1. Для этого примера необходима только плата Arduino.

Код

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

String stringOne = "Content-Type: text/html";

  // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  if (stringOne.substring(19) == "html") {
   }

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

String stringOne = "Content-Type: text/html";

  // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  if (stringOne.substring(19) == "htm") {
   }

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

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

String stringOne = "Content-Type: text/html";

  // Вы также можете искать подстроки, находящиеся в центре строки:
  if (stringOne.substring(14,18) == "text") {

  }

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

Внимание!

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

/*
  Строковая функция Substring
 
  Несколько примеров использования функции substring() при работе со строками.
 
  Создан 27 июля 2010, 
  модифицирован 2 апреля 2012 Заком Эвеландом (Zach Eveland).
 
  http://arduino.cc/en/Tutorial/StringSubstring
 
  Этот код не защищен авторским правом.
 */

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

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

void loop() {
  // Задаем строку:
  String stringOne = "Content-Type: text/html";
  Serial.println(stringOne);

  // Функция substring(19) ищет подстроку от указанной позиции (т.е. от 19) и до самого конца:
  if (stringOne.substring(19) == "html") {
    Serial.println("It's an html file"); 
  } 
  // Вы также можете искать подстроки, находящиеся в центре строки:
  if (stringOne.substring(14,18) == "text") {
    Serial.println("It's a text-based file"); 
  } 

  // Пока условие верно, ничего не делаем:
  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

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