Eerder in de cursus zeiden we al dat een string een aaneenschakeling van
tekens is. Een los teken heeft in C# een eigen datatype: char. In deze
activiteit zien we de relatie tussen string en char van naderbij, en die
blijkt sterk op een array te lijken.
Wil je een tekst letter per letter behandelen, dan kan je de string beschouwen
als een array van tekens van het type char. Net als bij een array kan je
de string doorlopen.
Met een foreach-lus haal je rechtstreeks elk teken op:
string eenTekst = "Dit is een voorbeeld";
foreach (char letter in eenTekst)
{
Console.WriteLine(letter);
}
Je kan ook met een gewone for-lus werken. Dan spreek je elk teken aan via zijn
index, precies zoals bij een array: eenTekst[i]. De lengte van de string
vraag je op met eenTekst.Length:
string eenTekst = "Dit is een voorbeeld";
char letter;
for (int i = 0; i < eenTekst.Length; i++)
{
letter = eenTekst[i];
Console.WriteLine(letter);
}
Het resultaat van beide voorbeelden is hetzelfde: de tekst wordt teken per teken
getoond, elk op een nieuwe regel. Net als bij een array begint de index bij
0, dus eenTekst[0] is het eerste teken ('D').
Er bestaat ook een manier om van een string een echte array van char’s te
maken: de methode ToCharArray(). In onderstaand programma zetten we de
ingelezen tekst om naar een array van tekens, en tonen we daarna elk teken
opnieuw:
// declaratie van de variabele
char[] tekens;
Console.Write("Geef een woord: ");
tekens = Console.ReadLine().ToCharArray();
foreach (char teken in tekens)
{
Console.Write(teken.ToString());
}
In het volgende voorbeeld halen we de tekens op positie 4 en 5 uit de tekst. Bij
"Dit is een voorbeeld" zijn dat de tekens 'i' en 's' (het eerste teken
staat immers op positie 0).
We willen die letters samenvoegen tot één string. Daarvoor declareren we een
variabele resultaat met als beginwaarde een lege tekst (""). Bij het
samenvoegen roepen we expliciet de methode ToString() op de char aan. Zonder
die ToString() zou C# een foutmelding geven omdat het de char niet zomaar
naar een string kan optellen.
string eenTekst = "Dit is een voorbeeld";
char letter;
string resultaat = "";
for (int i = 4; i < 6; i++)
{
letter = eenTekst[i];
resultaat = resultaat + letter.ToString();
}
Console.WriteLine(resultaat);
De for-lus loopt enkel over de indexen 4 en 5, dus we voegen 'i' en 's'
toe aan resultaat. Dit programma toont:
is
Een string gedraagt zich dus als een alleen-leesbare array van
char’s: je kan elk teken aanspreken mettekst[i]en de hele tekst doorlopen met eenforeach- offor-lus. Wil je echt met een array werken, gebruik danToCharArray().