We gebruiken het einde van klassen en objecten om iets dieper in de String
klasse te duiken en aan te tonen dat er tal van nuttige zaken bestaan om met strings te werken.
Door een @
(verbatim character) voor een string te plaatsen zeggen we concreet: "de hele string die nu volgt moet je beschouwen zoals hij er staat. Je mag alle escape karakters negeren.
Dit wordt vaak gebruikt om een filepath iets leesbaarder te maken.
Zonder verbatim: string path= "c:\\Temp\\myfile.txt";
Met verbatim: string path= @"c:\Temp\myfile.txt";
Aan het einde van dit hoofdstuk willen we een csv-bestand (comma separated value) splitsen. De Split
methode laat toe een string te splitsen op een bepaald teken. Het resultaat is steeds een array van strings.
Uiteraard kan je dit dus gebruiken om op eender welk char
te splitsen en dus nit enkel een ','
(komma).
Via Join
kunnen we array van string terug samenvoegen. Het resultaat is een nieuwe string.
Volgende voorbeeld zal de eerder array van het vorige voorbeeld opnieuw samenvoegen maar nu met telkens een ;
tussen iedere string:
Voorgaande methoden zijn static
en moet je dus via de klasse String
doen en niet via de objecten zelf.
Volgende methoden/properties kan je rechtstreeks op de string-objecten aanroepen (i.e. niet static
methoden)
int Length
: geeft totaal aantal karakters in de string
IndexOf(string para)
: geeft int
terug die de index bevat waar de string die je als parameter meegaf begint
Trim()
: verwijdersd alle onnodige spaties vooraan en achteraan de string en geeft de opgekuiste string terug
ToUpper()
: zal de meegegeven string naar ALLCAPS omzetten en geeft de nieuwe string als resultaat terug
ToLower()
: idem maar dan naar kleine letters
Replace(string old, string news)
: zal in de string alle substring die gelijk zijn aan old
vervangen door de meegegeven news
string
De correcte manier om strings te vergelijken is met de Compare(string s1, string s2)
methode. Deze zal een int
terug geven:
-1 : de string s1
komt voor de strings2
indien je ze lexicografisch zou sorteren (dit is ongeveer hetzelfde als alfabetisch, maar maakt bijvoorbeeld een onderscheid tussen kleine letters en hoofdletters).
0: beide strings zijn identiek
1: de string s2
komt voor s1
De System.IO
namespace bevat tal van nuttige methoden en klassen om met bestanden te werken. Om gebruik hiervan te maken plaats je bovenaan je file:
Via System.File.ReadAllLines()
kunnen we een tekstbestand uitlezen. De methode geeft een array van string terug. Per lijn die eindigt met een newline (\r\n
) zal een nieuwe string aan de array toegevoegd worden.
Dankzij ReadAllLines
en Split
hebben we nu alle bouwstenen om eenvoudig een csv-bestand te verwerken.
Stel je voor dat een bestand soccer.csv
volgende tekst bevat:
Volgende code zal dit bestand uitlezen en de individuele data op het scherm tonen:
Vaak zal je een online bestand willen verwerken. De WebClient
klasse heeft tal van manieren om met online bronnen te werken. Deze klasse bevindt zich in de System.Net
namespace en vereist dus dat je bovenaan je code volgende lijn toevoegt:
Volgende code toont hoe we een bestand van een specifieke locatie kunnen downloaden:
Dit bestand is 1 platte tekst. Willen we deze vervolgens verwerken dan moeten we deze splitsen in lijnen:
We hebben nu een for
nodig die lijn per lijn zal splitsen:
In dit voorbeeld gaan we er vanuit dat de eerste lijn in het bestand een "header" bevat, die we dus moeten overslaan. Daarom starten we de loop vanaf lijn 1.
Je kan tekst uit een bestand lezen, maar uiteraard kan je ook naar een bestand wegschrijven. De 2 eenvoudigste manieren zijn:
File.WriteAllText
: deze gebruik je als je 1 enkele string wilt wegschrijven
File.WriteAllLines
: deze is de omgekeerde van ReadAllLines()
en zal een array van strings wegschrijven.
Een voorbeeld:
Opgelet met het schrijven naar bestanden: dit zal onherroepelijk het target bestand overschrijven. .Gebruik if(File.Exists(pathtofile))
om te controleren of een bestand bestaat of niet. Eventueel kan je dan aan de gebruiker bevestiging vragen of je deze effectief wilt overschrijven.
Wil je CSV-bestand maken dan zal je eerst met String.Join
een komma-separated lijst maken, bijvoorbeeld: