Hjem » Siste artikler » Strenger i C#: forstå, formatér og valider tekst uten hodebry

Strenger i C#: forstå, formatér og valider tekst uten hodebry

Hovedillustrasjon
Hovedillustrasjon. Foto: Kedibone Isaac Makhumisane / Unsplash.

Tekst dukker opp nesten overalt i C#: navn, e‑poster, URL-er, JSON, logger og meldinger til sluttkunden. Hvis du forstår strenger godt, blir det lettere å skrive kode som både er lesbar og robust.

I denne guiden ser vi på strenger i C#: hva de egentlig er, hvorfor små detaljer som immutability betyr noe, og hvordan du kan formatere, dele og validere tekst på en trygg måte med konkrete eksempler.

Hva en string i C# faktisk er

I C# erstringen referansetype som representerer tekst som en sekvens av tegn. Strenger erimmutable, som betyr at de ikke kan endres etter at de er opprettet.

Når du «endrer» en string, lager du i praksis en ny. Dette har betydning både for ytelse og minne, spesielt hvis du gjør mange små tekstoperasjoner i en løkke.

Opprette og kombinere strenger

Du kan lage strenger på flere måter:

  • Vanlig literal:"Hei"
  • Interpolasjon:$"Hei {navn}"
  • Verbatim literal:@"C:tempfil.txt"

Interpolasjon gir ofte mer lesbar kode enn pluss-operatoren, spesielt når du har flere verdier:

var melding = $"Hei {fornavn} {etternavn}, du har {antall} nye varsler.";

Unngå treg strengbygging med StringBuilder

Hvis du setter sammen tekst i en løkke, kan mange nye string-objekter gi unødvendig belastning. Da erStringBuilderet bedre valg:

var sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
  sb.Append("Linje ").Append(i).Append('n');
}
var resultat = sb.ToString();

Bruk vanlig string-interpolasjon for korte og få operasjoner, og vurderStringBuildernår du lager større tekstblokker eller jobber i store løkker.

Trygg håndtering av null og tomme strenger

Null og tom tekst er en vanlig kilde til feil. I C# er dette tre forskjellige tilfeller:

  • null:ingen string i det hele tatt
  • “”: tom tekst
  • ” “: kun mellomrom

Bruk alltid de innebygde metodene når du sjekker dette:

  • string.IsNullOrEmpty(tekst)
  • string.IsNullOrWhiteSpace(tekst)

Et godt mønster er å validere tidlig, for eksempel i metoder som tar imot tekst fra skjema eller API-kall.

Rense og normalisere innkommende tekst

Før du lagrer eller bruker tekst videre, er det lurt å rydde litt. Et typisk eksempel er navn eller e‑post fra et skjema:

public string NormalizeName(string rawName)
{
  if (string.IsNullOrWhiteSpace(rawName)) return string.Empty;

  var trimmed = rawName.Trim();
  return trimmed.Length > 100
    ? trimmed.Substring(0, 100)
    : trimmed;
}

Her fjerner du unødvendige mellomrom og begrenser lengden, noe som både beskytter databasen og gir mer forutsigbar tekst videre i systemet.

Dele og sette sammen tekst

Tematisk illustrasjon
Tematisk illustrasjon. Foto: cottonbro studio / Pexels.

To metoder går igjen ofte:SplitogJoin.

Splitdeler en streng til en array basert på et skilletegn:

var linjer = tekst.Split('n', StringSplitOptions.RemoveEmptyEntries);

Joingjør det motsatte, og er nyttig når du lager CSV, logger eller visningstekst:

var csv = string.Join(";", verdier);

Formatere tall, datoer og valuta

Du vil ofte vise tall og datoer som en del av tekst. Da erformatstrengernyttige, særlig sammen med interpolasjon:

var prisTekst = $"Pris: {pris:N2} kr";
var datoTekst = $"Dato: {dato:dd.MM.yyyy}";

Formatkoder som N2 og dd.MM.yyyy styrer hvordan verdien vises. Vær oppmerksom på at formatering kan være avhengig av kulturinnstillinger, spesielt for tall og datoer.

Vanlige valideringer: e‑post, tall og lengde

Før du stoler på tekst, bør du sjekke om den oppfyller enkle regler. Noen eksempler:

  • Minimums- og maksimumslengde
  • Om den ser ut som en e‑postadresse
  • Om den kan tolkes som et tall

For tall er det tryggere å brukeTryParseennParse:

if (int.TryParse(input, out var verdi))
{
  // Gyldig tall, bruk verdi
}
else
{
  // Gi feilmelding
}

For mer komplekse mønstre kan regulære uttrykk være nyttig, men start heller med enkle regler og bygg på etter behov.

Forskjell på Equals, == og sammenligning uten store/små bokstaver

Strenger kan sammenlignes på flere måter. I C# er==vanligvis det mest lesbare, men vær bevisst på om du bryr deg om store og små bokstaver eller ikke.

For sammenligning uten hensyn til store/små bokstaver kan du bruke:

if (string.Equals(a, b, StringComparison.OrdinalIgnoreCase))
{
  // Lik tekst uavhengig av case
}

Å være tydelig på sammenligningstype gjør koden din mer forutsigbar og enklere å vedlikeholde, spesielt i domener der tekstidentitet er viktig.

Feilsøking av tekstrelaterte problemer

Feil med tekst er ofte subtile: ekstra mellomrom, usynlige tegn eller feil tegnsett. Når noe «ser likt ut, men fungerer ikke», kan du:

  • LoggeLengthogstring.Joinpå tegnkoder
  • Trimme både begynnelse og slutt, og erstatte dobbelt mellomrom
  • Normalisere linjeskift til n før videre behandling

Ved å undersøke dataene systematisk, blir det raskere å finne årsaken enn å gjette i blinde.

Oppsummert: gode vaner med strenger

Hvis du vil unngå mye frustrasjon rundt tekst i C#, kommer du langt med noen få vaner: bruk interpolasjon for lesbar kode,StringBuilderfor store tekstblokker, ogIsNullOrWhiteSpacefør du stoler på innkommende data.

Legg på fornuftig formatering, bevisst sammenligning av tekst og en liten dose validering, så får du kode som er lettere å teste, feilsøke og videreutvikle når prosjektet vokser.

0 kommentarer