Karakterlánc-összehasonlító operátorok

Ismerje meg, hogyan lehet betűnkéti összehasonlítást végezni a karakterláncok között. Hasznosak többek között a válogatáshoz és az ábécé rendezéséhez.


Utolsó felülvizsgálat: 2022.02.04 16:50


A String összehasonlító operátorok ==, !=, >, <, >=, <=, valamint az equals() és equalsIgnoreCase() metódusok lehetővé teszik a karakterláncok betűnkénti összehasonlítását. Hasznosak többek között a rendezéshez és az ábécé sorrendbe rendezéséhez.

Az == operátor és az equals() metódus azonosan teljesít. Más szavakkal, az

if (stringOne.equals(stringTwo)) {

ugyanaz mint az

if (stringOne ==stringTwo) {

A ">" (nagyobb, mint) és "<" (kisebb, mint) operátorok ábécé sorrendben értékelik a karakterláncokat, az első karakternél, ahol a kettő különbözik. Tehát például "a" < "b" és "1" < "2", de "999" > "1000", mert a 9 az 1 után jön.

Vigyázat: A karakterlánc-összehasonlító operátorok zavaróak lehetnek numerikus karakterláncok összehasonlításakor, mivel a számokat karakterláncként kezeli, nem pedig számként. Ha össze kell hasonlítania a számokat, hasonlítsa össze őket egészként, lebegőpontosként vagy long-ként, és ne karakterláncként.

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

/*
  Comparing Strings

  Példák a karakterláncok összehasonlítására az összehasonlító operátorok használatával

  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/StringComparisonOperators
*/

String stringOne, stringTwo;

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
  }


  stringOne = String("this");
  stringTwo = String("that");
  // küldj bevezetőt:
  Serial.println("\n\nComparing Strings:");
  Serial.println();

}

void loop() {
  // a két String egyenlő:
  if (stringOne == "this") {
    Serial.println("StringOne == \"this\"");
  }
  // a két String nem egyenlő:
  if (stringOne != stringTwo) {
    Serial.println(stringOne + " =! " + stringTwo);
  }

  // a két String nem egyenlő (a kis- és nagybetűk érzékenysége számít):
  stringOne = "This";
  stringTwo = "this";
  if (stringOne != stringTwo) {
    Serial.println(stringOne + " =! " + stringTwo);
  }
  // az equals()-t is használhatja annak ellenőrzésére, hogy két karakterlánc azonos-e:
  if (stringOne.equals(stringTwo)) {
    Serial.println(stringOne + " equals " + stringTwo);
  } else {
    Serial.println(stringOne + " does not equal " + stringTwo);
  }

  // vagy esetleg figyelmen kívül szeretné hagyni a kis- és nagybetűket:
  if (stringOne.equalsIgnoreCase(stringTwo)) {
    Serial.println(stringOne + " equals (ignoring case) " + stringTwo);
  } else {
    Serial.println(stringOne + " does not equal (ignoring case) " + stringTwo);
  }

  // egy numerikus karakterlánc az általa képviselt számhoz hasonlítva:
  stringOne = "1";
  int numberOne = 1;
  if (stringOne.toInt() == numberOne) {
    Serial.println(stringOne + " = " + numberOne);
  }



  // két numerikus String összehasonlítása:
  stringOne = "2";
  stringTwo = "1";
  if (stringOne >= stringTwo) {
    Serial.println(stringOne + " >= " + stringTwo);
  }

  // Az összehasonlító operátorok a karakterláncok alfabetikus rendezéshez is használhatók:
  stringOne = String("Brown");
  if (stringOne < "Charles") {
    Serial.println(stringOne + " < Charles");
  }

  if (stringOne > "Adams") {
    Serial.println(stringOne + " > Adams");
  }

  if (stringOne <= "Browne") {
    Serial.println(stringOne + " <= Browne");
  }


  if (stringOne >= "Brow") {
    Serial.println(stringOne + " >= Brow");
  }

  // az compareTo() operátor lehetővé teszi az általa kiértékelt karakterláncok
  // összehasonlítását is az első eltérő karakterig.
  // ha az összehasonlítandó karakterlánc első karaktere alfanumerikus sorrendben
  // előbb van, akkor az compareTo() nagyobb, mint 0:
  stringOne = "Cucumber";
  stringTwo = "Cucuracha";
  if (stringOne.compareTo(stringTwo) < 0) {
    Serial.println(stringOne + " comes before " + stringTwo);
  } else {
    Serial.println(stringOne + " comes after " + stringTwo);
  }

  delay(10000);  // mert a következő rész egy ciklus:

  // Az compareTo() akkor hasznos, ha számokat tartalmazó karakterláncok is vannak:

  while (true) {
    stringOne = "Sensor: ";
    stringTwo = "Sensor: ";

    stringOne += analogRead(A0);
    stringTwo += analogRead(A5);

    if (stringOne.compareTo(stringTwo) < 0) {
      Serial.println(stringOne + " comes before " + stringTwo);
    } else {
      Serial.println(stringOne + " comes after " + stringTwo);

    }
  }
}

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.