String indexOf() és lastIndexOf() metódusok

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.