De lengte van een string vinden

C#:
De lengte van een string vinden

Hoe te:

In C# geeft de eigenschap string.Length je het aantal tekens in een string. Zo gebruik je het:

using System;

class Program
{
    static void Main()
    {
        string example = "Hallo, Wereld!";
        Console.WriteLine(example.Length); // Uitvoer: 13
    }
}

Makkelijk, toch? Maar onthoud, het telt tekens, niet bytes. Met emoji’s of speciale tekens, kunnen dingen ingewikkeld worden. Meer daarover later.

Diepgaand

Historisch gezien was het vinden van de lengte van een string verbonden aan geheugenbeheer en manipulatie in programmering. Aangezien C# een hogere programmeertaal is, abstraheert het dat laag-niveau werk weg. Toch is het goed om te weten wat er onder de motorkap zit.

Alternatieven? Zeker! Je zou example.ToCharArray().Length in het wild kunnen tegenkomen, maar dat is slechts extra werk voor hetzelfde resultaat.

Nu, over die lastige tekens. C#’s Length eigenschap telt de char objecten van een string, elk die een UTF-16 code-eenheid vertegenwoordigt. Dat is prima totdat je surrogaatparen tegenkomt – karakters zoals emoji’s die twee char objecten nodig hebben. Hier is het ding: Length telt die als twee. Ja.

Voor een nauwkeurige telling van visuele karakters of grafemenclusters, heb je de StringInfo klasse van System.Globalization nodig:

using System;
using System.Globalization;

class Program
{
    static void Main()
    {
        string example = "👍"; // Duim omhoog emoji

        Console.WriteLine(example.Length); // Uitvoer: 2 <- Vanwege het surrogaatpaar!
        Console.WriteLine(new StringInfo(example).LengthInTextElements); // Uitvoer: 1
    }
}

Begrijp je het verschil? Het is niet alleen academisch; het zou de tekstverwerking op betekenisvolle manieren kunnen beïnvloeden.

Zie Ook

Verken meer met deze bronnen:

Ken je strings, behandel ze verstandig, en schrijf code die telt – in elke zin.