Egy karaktersorozat első/utolsó előfordulásának megkeresése.
Utolsó felülvizsgálat: 2022.02.04 16:50
A String objektum indexOf() metódusa lehetőséget ad arra, hogy egy karakterláncban egy adott karakterérték első példányát megkeresse. Megkeresheti a karakter első példányát is egy adott eltolás után. A lastIndexOf() metódus lehetővé teszi, hogy ugyanazt a műveletet végezze el egy karakterlánc végétől.
String stringOne = "<HTML><HEAD><BODY>";
int firstClosingBracket = stringOne.indexOf('>');
Ebben az esetben a firstClosingBracket
értéke 5, mivel az első >
karakter a String 5. pozíciójában van (az első karaktert 0.-nak számítva). Ha szeretné megkapni a második zárójelet, használhatja azt a tényt, hogy ismeri az első pozícióját, és az eltolásként keressen a firstClosingBracket + 1
-től, így:
stringOne = "<HTML><HEAD><BODY>";
int secondClosingBracket = stringOne.indexOf('>', firstClosingBracket + 1 );
Az eredmény 11 lenne, a HEAD címke záró zárójelének pozíciója.
Ha a String végéről szeretne keresni, használhatja helyette a lastIndexOf()
metódust. Ez a függvény egy adott karakter utolsó előfordulásának pozícióját adja vissza.
String stringOne = "<HTML><HEAD><BODY>";
int lastOpeningBracket = stringOne.lastIndexOf('<');
Ebben az esetben a lastOpeningBracket
értéke 12, a BODY címke < pozíciója. Ha a HEAD címke nyitó zárójelét szeretné, akkor a következő szerepeljen
stringOne = "<HTML><HEAD><BODY>";
stringOne.lastIndexOf('<', lastOpeningBracket -1);
,ami 6.
Hardver szükséglet
Arduino kártya
Az áramkör
Ebben a példában nincs áramkör, bár a kártyát USB-n keresztül kell csatlakoztatni a számítógéphez, és az Arduino Software (IDE) soros monitor ablakának nyitva kell lennie.

A kód
/*
String indexOf() and lastIndexOf() functions
Példák karakterek kiértékelésére, keresésére és cseréjére egy karakterláncban
created 27 Jul 2010
modified 2 Apr 2012
by Tom Igoe
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/strings/StringIndexOf
*/
void setup() {
// Nyissa meg a soros kommunikációt, és várja meg, amíg megnyílik a port:
Serial.begin(9600);
while (!Serial) {
; // várja meg a soros port csatlakozását. Csak a natív USB-porthoz szükséges
}
// küldj bevezetőt:
Serial.println("\n\nString indexOf() and lastIndexOf() functions:");
Serial.println();
}
void loop() {
// Az indexOf() egy karakterláncban lévő adott karakter pozícióját (azaz indexét)
// adja vissza. Például, ha HTML-címkéket dolgoz fel, használhatja:
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);
// Az indexOf() segítségével is kereshet Stringet:
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("<LI>", firstListItem + 1);
Serial.println("The index of the second list tag in the string " + stringOne + " is " + secondListItem);
// A lastIndexOf() egy karakter vagy karakterlánc utolsó előfordulását adja meg:
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 tag in the string " + stringOne + " is " + lastListItem);
// A lastIndexOf() karakterláncot is kereshet:
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 to last paragraph tag " + stringOne + " is " + secondLastGraf);
// ne csinálj semmit, amíg igaz:
while (true);
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.