Drop links or images here to add them to the editor.

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.

Een string is een rij char’s

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').

Een string omzetten naar een char-array

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());
}

Een uitgewerkt voorbeeld: tekens samenplakken tot een string

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 met tekst[i] en de hele tekst doorlopen met een foreach- of for-lus. Wil je echt met een array werken, gebruik dan ToCharArray().