Szövegek darabolása: a Split
Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!
Irány a játékGyakran előfordul, főleg fájlból történő beolvasásnál, hogy olyan adatfájllal dolgozunk, amelynek egy sorában több különböző adat is van, például pontosvesszővel, szóközzel, vagy tabulátorral elválasztva. Nézzük mondjuk ezt a mintafájlt:
Kovács Péter;1999;170 Szabó András;1987;173 Tóth Noémi;2001;167 Szabados Petra;1998;177
Ebben a fájlban minden sorban 3 adat található:
- Név: az ember teljes neve (szöveg)
- Születési dátum: csak évszám (egész szám)
- Testmagasság: centiméterben megadva (egész szám)
Ahhoz, hogy ezeket az adatokat külön-külön is hasznosítani tudjuk, egy sor beolvasása után a benne található 3 információt szét kell vágnunk. Erre használhatjuk a szövegek Split nevű metódusát. A Split-nek 1 darab paramétere van, egy karaktert kell neki átadnunk, aminél szét szeretnénk szeletelni a szöveget. Végeredményként egy szövegekből álló tömböt ad vissza, annyi elemmel, ahány darab keletkezett. Nézzünk egy mintát:
string sor = "Kovács Péter;1999;170";
string[] darabok = sor.Split(';');
A kódrészlet lefutása után a darabok tömbben 3 elem található:
darabok[0] = "Kovács Péter"
darabok[1]="1999"
darabok[2]="170"
Érdemes megjegyezni, hogy ezek a darabok - a tartalmuktól függetlenül - mind szöveg adattípussal rendelkeznek, ha tehát egy számként szeretnénk dolgozni velük, akkor át kell őket konvertálni a megfelelő konvertáló függvénnyel, például így:
int szuletett = Convert.ToInt32(darabok[1]);
Speciális karakterek
Előfordulhat olyan eset, hogy a Split-tel valamilyen speciális karakternél szeretnénk elvagdosni a szövegünket, például sortöréseknél, vagy tabulátoroknál. Ezeket a speciális karaktereket nem tudjuk csak úgy begépelni a kódba, mert akkor a kódunk nem fog megfelelően működni, helyette az alábbi speciális jelölőket kell használnunk:
Új sor: \n
Tabulátor: \t