Szöveges változók II.


Ami még kimaradt az első részből: szövegen belüli karakter változtatások, string műveletek, konvertálások más változó típusokba.

Karakterek cseréje

Az első utasítás a replace(), ez karakterláncon belüli részek cseréjét teszi lehetővé. Bizonyos karakterek lecserélhetők, de szavak vagy egész mondatok is. Egy rövid példa:

void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg = "emerre vissz utam";
String szoveg2 = szoveg,szoveg3 = szoveg;// értékadás

szoveg2.replace("e","a"); // az e karakterek cseréje a-ra
szoveg3.replace("visz utam","indulok"); // mondat rész cseréje
Serial.println(szoveg);
Serial.println(szoveg2);
Serial.println(szoveg3);
while(true);
}


Látható a replace() utasítás kezelése: zárójelen belül az első paraméter a lecserélendő szövegrész,
a második a lecserélendő helyére kerülő szöveg.


Összehasonlítás

A compareTo() utasítást használjuk két string összehasonlítására. A stringeket karakterenként hasonlítja össze, minden karakternek az ascII értékét nézi, ha így az első string nagyobb értékű akkor -1-el tér vissza, ha string1 = string2 akkor 0 az érték, ha sting1 kisebb mint string2 akkor +1 lesz a visszatérési értéke. Pl.:  String1.compareTo(string2);


void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg = "otthon";
String szoveg2 = "itthon";
String szoveg3 = szoveg;

if(szoveg.compareTo(szoveg2)==0)
Serial.println("A ket szoveg megegyezik");
else
Serial.println("Nem egyformak");

while(true);
}

Próbáljuk ki a példát a következő sor átírásával is: if(szoveg.compareTo(szoveg3)==0)

Ide tartozik még az equals() és az

equalsIgnoreCase() utasítás is, ezek is a karakterláncokat hasonlítják össze és visszatérnek egy logikai true(igaz) értékel ha a két string egyforma illetve
egy logikai false(hamis) értékkel ha a két string különböző. A két utasítás között csak annyi a
különbség, hogy az equalsIgnoreCase() nem tesz különbséget kis és nagy betű között .

String1.equalsIgnoreCase(string2); // ”HELLO” = ”hello”

string1.equals(string2); //”HELLO” != ”hello”


Törlés

Egy karakterlánc vagy egyetlen karakter törlését végre lehet hajtani a remove() utasítás segítségével. Erre mutat példát a következő kis program:

void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg ="Hello Vilag!";
Serial.println(szoveg);
szoveg.remove(5);
Serial.println(szoveg);
szoveg = "Hello Vilag!";
szoveg.remove(5,6);
Serial.println(szoveg);
while(true);
}


Ha a remove(s) csak egy paramétert tartalmaz, az mindig az utolsó karakter száma, a string többi része törlődik. Ha két paraméter van ,akkor az első a törlés előtti utolsó karakter, a második szám a kitörölendő karakterek száma.


Karakter pozíció és csere

Két függvényt nézzünk meg, az egyik a charAt() ami egy stringen belüli adott pozíciójú karakter lekérdezését teszi lehetővé. A visszatérő értéke char típusú.

pl.: char = string.charAt(3);

A másik függvény a setCharAt() amivel a string adott helyén lévő karaktert cserélhetjük le egy másikra.

pl.: string.setCharAt(4,'a');


void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg = "Hello!";
char kari;
kari = szoveg.charAt(1);
Serial.println(kari);
szoveg.setCharAt(1,'a');
Serial.println(szoveg);
while(true);
}

A setCharAt() második paramétere mindig char típusú ezért mindig ügyeljünk arra, hogy csak aposztróf jelek közé kell tenni (nem idézőjelek).


String kezdet és vég összehasonlítása

Itt is két utasítás végzi el az összehasonlítást, a string elejét egy karakterlánccal veti össze a
startsWith() utasítás . pl.: string.startsWith(string2);

A string végét egy karakterlánccal összehasonlító utasítás az endsWith().Mindkét utasítás igaz
értéket ad ha a string eleje illetve vége megegyezik a paraméterben megadott stringgel.


void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg = "Elso lehetoseg";
if(szoveg.startsWith("Elso"))
Serial.println("a string az Elso szoval kezdodik");
if(szoveg.endsWith("lehetoseg"))
Serial.println("a string lehetosegre vegzodik");
while(true);
}


String konvertálása számmá

Megint két utasítással ismerkedünk az egyik stringből alakít át egész számmá, ez a toInt(),
a másik stringből lebegőpontos számmá ez pedig toFloat(), de beszéljen a példa progi:

void setup(){
Serial.begin(9600);
}
void loop(){
String szoveg ="12345",szoveg2 = "123.321";
int ertek;
float ertek2;
ertek = szoveg.toInt();
Serial.print("12345+123=");
Serial.println(ertek+123);
ertek2 = szoveg2.toFloat();
Serial.print("123.321+321.123=");
Serial.println(ertek2+321.123);
while(true);
}


Ennyi fért bele a szöveges változókról szóló cikkekbe, mindenkinek további jó szórakozást!