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.