Arduino:Примеры/StringIndexOf
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Строковые функции IndexOf и LastIndexOf [1]
Строковая функция indexOf() дает возможность искать в строке то или иное значение по принципу «самый первый с начала». В то же время, задав определенный «фильтр», можно искать не только первый, но и второй, третий символ и т.д. Функция lastIndexOf() делает то же самое, но по принципу «самый первый с конца».
String stringOne = "<HTML><HEAD><BODY>";
int firstClosingBracket = stringOne.indexOf('>');
В данном случае значение firstClosingBracket равно 5, поскольку самый первый символ «>», который попадается функции indexOf(), находится именно на пятой позиции (т.е. отсчет идет от 0). Если вам нужно отыскать не первую, а вторую по порядку закрывающую скобку, вам нужно использовать знание о том, где находится первая, а затем воспользоваться построением «firstClosingBracket + 1» – оно будет своего рода «фильтром» для поиска этой второй закрывающей скобки.
stringOne = "<HTML><HEAD><BODY>";
int secondClosingBracket = stringOne.indexOf('>', firstClosingBracket + 1 );
Теперь результатом будет 11 – это позиция второй закрывающей скобки (она закрывает тег «HEAD»). Если вам нужно произвести поиск с конца строки, можно воспользоваться функцией lastIndexOf() – она тоже возвращает позицию заданного символа, но теперь поиск начинается с конца строки.
stringOne = "<HTML><HEAD><BODY>";
int lastOpeningBracket = stringOne.lastIndexOf('<');
В данном случае lastOpeningBracket будет равно 12 – это позиция первого с конца символа «<», т.е. открывающей скобки для тега «BODY». Если вы хотите добраться до открывающей скобки у тега HEAD, в коде нужно будет прописать
stringOne.lastIndexOf('<', lastOpeningBracket -1)
, и эта функция вернет вам значение 6.
Необходимое оборудование
- Плата Arduino;
Цепь
Для этого примера не нужно строить никакой цепи, просто подключите Arduino к компьютеру (при помощи USB).
Код
/*
Строковые функции indexOf() и lastIndexOf()
Несколько примеров того, как анализировать строки, а также искать и заменять в них определенные символы.
Создан 27 июля 2010,
модифицирован 2 апреля 2012 Томом Иго (Tom Igoe)
http://arduino.cc/en/Tutorial/StringIndexOf
Этот код не защищен авторским правом.
*/
void setup() {
// Инициализируем последовательную передачу данных и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Leonardo)
}
// Отсылаем вступительную часть:
Serial.println("\n\nString indexOf() and lastIndexOf() functions:");
Serial.println();
}
void loop() {
// Функция indexOf() возвращает самую первую позицию (т.е. индекс) определенного символа, находящегося в строке.
// Ее можно использовать, например, при анализе HTML-тегов:
String stringOne = "<HTML><HEAD><BODY>";
int firstClosingBracket = stringOne.indexOf('>');
Serial.println("The index of > in the string " + stringOne + " is " + firstClosingBracket);
stringOne = "<HTML><HEAD><BODY>";
int secondOpeningBracket = firstClosingBracket + 1;
int secondClosingBracket = stringOne.indexOf('>', secondOpeningBracket );
Serial.println("The index of the second > in the string " + stringOne + " is " + secondClosingBracket);
// Кроме того, при помощи indexOf() можно искать и совокупности символов
// или даже целые строки:
stringOne = "<HTML><HEAD><BODY>";
int bodyTag = stringOne.indexOf("<BODY>");
Serial.println("The index of the body tag in the string " + stringOne + " is " + bodyTag);
stringOne = "<UL><LI>item<LI>item<LI>item</UL>";
int firstListItem = stringOne.indexOf("<LI>");
int secondListItem = stringOne.indexOf("item", firstListItem + 1 );
Serial.println("The index of the second list item in the string " + stringOne + " is " + secondClosingBracket);
// Функция lastIndexOf() возвращает самый последний индекс заданного символа, находящегося в строке:
int lastOpeningBracket = stringOne.lastIndexOf('<');
Serial.println("The index of the last < in the string " + stringOne + " is " + lastOpeningBracket);
int lastListItem = stringOne.lastIndexOf("<LI>");
Serial.println("The index of the last list item in the string " + stringOne + " is " + lastListItem);
// при помощи lastIndexOf() тоже можно искать совокупности символов и строки:
stringOne = "<p>Lorem ipsum dolor sit amet</p><p>Ipsem</p><p>Quod</p>";
int lastParagraph = stringOne.lastIndexOf("<p");
int secondLastGraf = stringOne.lastIndexOf("<p", lastParagraph - 1);
Serial.println("The index of the second last paragraph tag " + stringOne + " is " + secondLastGraf);
// Пока условие верно, ничего не делаем:
while(true);
}
См.также
- String object
- StringConstructors
- StringAdditionOperator
- StringIndexOf
- StringAppendOperator
- StringLengthTrim
- StringCaseChanges
- StringReplace
- StringCharacters
- StringStartsWithEndsWith
- StringComparisonOperators
- StringSubstring
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino