Arduino – String objektumok

Létrehozza a String osztály egy példányát. A String osztály különböző adattípusokból is hozhat létre karakterláncokat. A String osztály példánya olyan könnyen létrehozható, mint egy változó, és hozzá lehet rendelni egy értéket.

String myString = "Ez egy String objektum.";

Egy String objektum létrehozható számból is. ASCII táblázat szerinti karakterláncot kapunk.  A 20 számból „20” karakterlánc lesz.

String myString = (20);

A következő példa a decimális 20 HEX megfelelője 14.

String myString = (20, HEX);

A decimális 20 bináris alakja 00010100 lesz.

String myString = (20, BIN);

Az alábbi példa eredménye 20.69 lesz, a második paraméterben megadhatjuk, hogy hány tizedesjegyet jelenítsen meg, és ezt kerekítéssel teszi meg. Csak float és double adattípussal működik.

String thisString = String(20.68859, 2);

A Stringeket össze is fűzhetjük.

void setup() 
{
  Serial.begin(9600);

  String myString1 = "Hello ";
  String myString2 = "World";
  String myString3 = myString1 + myString2;

  Serial.println(myString3);
}

void loop()
{

}

A Stringeket össze is tudjuk hasonlítani. Az összehasonlítás különbséget tesz a kis- és nagybetűk között, vagyis a „Hello” nem egyenlő a „HELLO” Stringgel.

void setup() 
{
  Serial.begin(9600);

  String myString1 = "Hello";
  String myString2 = "HELLO";

  if(myString1 == myString2)
  {
    Serial.println("true");
  }
  else
  {
    Serial.println("false");
  }
}
void loop() 
{

}

Stringeket manipulálhatunk a következő függvényekel:

charAt() A String n-dik karakterével tér vissza. Az indexelés itt is nullával kezdődik.

void setup() 
{
  Serial.begin(9600);
  String myString = "Hello";
  unsigned int n = 1;

  Serial.println(myString.charAt(n));
}
void loop()
{

}

compareTo() Két karakterláncot hasonlít össze, tesztelve, hogy az egyik a másik elé vagy mögé kerül-e, vagy egyenlő-e. A karakterláncokat karakterenként összehasonlítja, a karakterek ASCII értékeivel és visszatér a köztük lévő különbség számával. Ez a szám lehet negatív szám is.

void setup() 
{
  Serial.begin(9600);
  String myString1 = "hello";
  String myString2 = "World";
  int n;

  n = myString1.compareTo(myString2);
  Serial.println(n);
}
void loop()
{

}

concat() a paramétert hozzáfűzi egy karakterlánchoz.

String myString = "Hello";
myString.concat(" World");

endsWith() Megvizsgálja, hogy a String egy másik String karakterével végződik-e. Ha igen true-val tér vissza, ellenkező esetben false.

void setup() 
{
  Serial.begin(9600);
  String myString1 = "Hello";
  String myString2 = "o";

  if(myString1.endsWith(myString2))
  {
    Serial.println("true");
  }
  else
  {
    Serial.println("false");
  }
}
void loop()
{

}

equals() Megegyezik a korábbi példában szereplő összehasonlító operátorral „==” Az összehasonlítás különbséget tesz a kis- és nagybetűk között, vagyis a „Hello” nem egyenlő a „HELLO” Stringgel.

void setup() 
{
  Serial.begin(9600);

  String myString1 = "Hello";
  String myString2 = "HELLO";

  if(myString1.equals(myString2))
  {
    Serial.println("true");
  }
  else
  {
    Serial.println("false");
  }
}
void loop() 
{

}

equalsIgnoreCase() Összehasonlítja az egyenlőség két húrját. Az összehasonlítás nem különbözteti meg a kis- és nagybetűket, vagyis a („hello”) egyenlő a („HELLO”) Stringgel.

void setup() 
{
  Serial.begin(9600);

  String myString1 = "Hello";
  String myString2 = "HELLO";

  if(myString1.equalsIgnoreCase(myString2))
  {
    Serial.println("true");
  }
  else
  {
    Serial.println("false");
  }
}
void loop() 
{

}

length() Visszaadja a String karaktereinek a számát a záró nulla karakter nélkül.

String myString = "Hello World";

int length = myString.length();

Serial.println(length);

getBytes() Átmásolja a String karaktereit a paraméterben megadott „len” hosszúságú „buff” pufferbe.

String myString = "Hello World";

unsigned int len = myString.length() + 1;
byte buff[len];

myString.getBytes(buff, len);

for (int i = 0; i < len; i++)
{
  Serial.println(buff[i]);
}

indexOf() Karaktert vagy Stringet keres egy másik Stringen belül. Alapértelmezés szerint a String elejétől kezdve keres, de kezdhet keresni egy adott indexből is, ha megadjuk a második paraméterben az indexet, így lehetővé téve a karakter vagy a String összes előfordulásának megtalálását.

myString.indexOf(val);
myString.indexOf(val, from);

String myString = "Hello World, Hello Arduino";

int index = myString.indexOf("Hello");

Serial.println(index);

lastIndexOf() Karaktert vagy Stringet keres egy másik Stringen belül. Alapértelmezés szerint a String végétől kezdve keres, de kezdhet keresni egy adott indextől is, ha megadjuk a második paraméterben az indexet, így lehetővé téve a karakter vagy a String összes előfordulásának megtalálását.

myString.lastIndexOf(val);
myString.lastIndexOf(val, from);

String myString = "Hello World, Hello Arduino";

int index = myString.lastIndexOf("Hello");

Serial.println(index);

remove() Eltávolítja a Stringből a karaktereket a megadott indextől a String végéig, vagy a megadott indextől a countban megadott számú indexig.

myString.remove(index);
myString.remove(index, count);

String myString = "Hello World";

myString.remove(2, 2);

Serial.println(myString);

replace() Lecseréli a myStringben a substring1 összes előfordulását a substring2-re.

String substring1 = "Arduino";
String substring2 = "World";
String myString = "Hello Arduino!";

Serial.println(myString);

myString.replace(substring1, substring2);

Serial.println(myString);

setCharAt() Beállítja a String egy karakterét az „index” pozícioban a „char” karakterrel. Nincs hatása a String meglévő hosszán kívül eső indexekre.

myString.setCharAt(index, char)

String myString = "hello world";
Serial.println(myString);

myString.setCharAt(0, 'H');
myString.setCharAt(6, 'W');
Serial.println(myString);

startsWith() Megvizsgálja, hogy egy String egy másik Stringgel kezdődik-e.

String myString = "Hello World";
String myString2 = "Hello";

if (myString.startsWith(myString2))
{
  Serial.println("Ez a String Hello-val kezdődik");
}
else
{
  Serial.println("Ez a String nem Hello-val kezdődik");
}

substring() Kimásol a Stringből egy substringet a kezdő indextől. Opcionális befejező indexet is megadhatunk, akkor eddig tart a substring másolása. Ha a befejező index elhagyásra kerül, akkor az substring a String végéig tart.

String myString = "Hello World";
String mySubString = myString.substring(0, 4);

Serial.println(myString);
Serial.println(mySubString);

toCharArray() Másolja a String karaktereit a buff pufferbe.

String myString = "Hello World";
byte buff[myString.length() + 1];

myString.toCharArray(buff, myString.length() + 1);

toDouble() A Stringet duplává alakítja. A Stringnek egy számjeggyel kell kezdődnie.

String myString = "41.83";
double myDouble = myString.toDouble();

toInt() Érvényes Stringet alakít át egész számra. A Stringnek egész számmal kell kezdődnie.

String myString = "36";
int myInt = myString.toInt();

toFloat() Érvényes Stringet floattá alakít. A Stringnek egy számjeggyel kell kezdődnie.

String myString = "41.83";
float myFloat = myString.toFloat();

toLowerCase() A Stringet kisbetűsre alakítja.

myString = "HELLO WORLD";
Serial.println(myString);

myString.toLowerCase();
Serial.println(myString);

toUpperCase() A Stringet nagybetűsre alakítja.

myString = "hello world";
Serial.println(myString);

myString.toUpperCase();
Serial.println(myString);

trim() Eltávolítja a String elejéről és végéről a szóközöket.

myString = "  Hello World    ";

Serial.println(myString.length());

myString.trim();

Serial.println(myString.length());

Ennyit a Stringekről. A következő részben az Arduino soros kommunikációt nézzük át.