arrow-left

All pages
gitbookPowered by GitBook
1 of 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Omzetten van en naar strings

hashtag
Input van de gebruiker verwerken

circle-check

Kennisclip voor deze inhoudarrow-up-right

hashtag
Conversie

Zoals eerder aangegeven, kan je geen strings toekennen aan variabelen van type int of omgekeerd. Toch wil je soms een getal beschouwen als tekst, of tekst omzetten naar een getal .NET heeft hiervoor methoden die je kunnen helpen om data van het ene type naar het andere te brengen. Deze methoden zitten binnen de Convert-klasse.

Het gebruik hiervan is zeer eenvoudig. Enkele voorbeelden:

Je plaatst bij gebruik van Convert tussen de ronde haakjes de variabele of literal die je wenst te converteren naar een ander type. Merk op dat naar een int converteren met .ToInt32() moet gebeuren. Voor andere types zijn er overeenkomstige methoden. Je kan . Volgende conversies zullen je al ver vooruit helpen:

hashtag
Foutloze input

Voorgaande code veronderstelt dat de gebruiker géén fouten invoert. De conversie zal namelijk mislukken indien de gebruiker bijvoorbeeld IKWEEG10KG invoert in plaats van 10,3.

In het begin van de leercurve moet je er altijd van uitgaan dat de gebruiker foutloze input geeft. Later leer je wel hoe je dit kan afhandelen.

circle-exclamation

Opgelet: de invoer van kommagetallen door de gebruiker is afhankelijk van de landinstellingen van je besturingssysteem. Staat deze in Belgisch/Nederlands dan moet je kommagetallen met een KOMMA(,) invoeren (dus 9,81), staat deze in het Engels dan moet je een PUNT(.) gebruiken (9.81).

circle-exclamation

Opgelet 2: In je C# code moet je doubles ALTIJD met een punt schrijven. Dit is onafhankelijk van je taalinstellingen.

gewenst type

methode

int

ToInt32

double

ToDouble

string

ToString

boolean

ToBoolean

byte

ToByte

alle conversie-mogelijkheden hier bekijkenarrow-up-right
int userAge = Convert.ToInt32("19"); // string to int
string ageAsText = Convert.ToString(19); // int to string

H3: Strings en hun methoden

Oefeningen

Al deze oefeningen maak je in een klasse StringsEnHunMethoden

hashtag
Oefening: VariabelenEnHoofdletters

hashtag
Leerdoelen

  • gebruik van variabelen om input en output op te slaan en te tonen

  • functionaliteit van strings

hashtag
Functionele analyse

Een applicatie vraagt je tekst in te voeren die dan daarna zal worden getoond met allemaal hoofdletters.

hashtag
Technische analyse

Noem de methode voor deze oefening VariabelenEnHoofdletters.

hashtag
voorbeeldinteractie(s)

hashtag
Technische hulp

Programmaverloop

Lees de gebruikersinvoer van de console en sla deze op in een variabele. Zet de inhoud van deze variabele om in hoofdletters. Je kan dit doen door ToUpper() te gebruiken. Uiteindelijk geef je dan het resultaat weer in de console.

Testscenario's

  • Voer tekst in met spaties

  • Voer tekst in van meer dan 100 karakters

  • Voer tekst in van 1 karakter

hashtag
Oefening: H3-string-interpolation

hashtag
Leerdoelen

  • gebruik van string interpolation

hashtag
Functionele analyse

Zelfde als oefeningen maaltafels en ruimte vorig hoofdstuk.

hashtag
Technische analyse

Je moet twee methoden schrijven. Noem de eerste MaaltafelsStringInterpolatie en de tweede RuimteStringInterpolatie. Deze doen net hetzelfde als hun tegenhangers uit het vorige hoofdstuk, maar je bouwt de getoonde tekst op met stringinterpolatie in plaats van via + en/of Console.Write.

hashtag
voorbeeldinteractie(s)

Zie oefening H2-maaltafels en H2-ruimte.

hashtag
Technische hulp

hashtag
Programmaverloop

Pas string interpolatie m.b.v. $ toe om de veranderlijke onderdelen van de output in te vullen.

hashtag
Testscenario's

  • Zie oefening H2-maaltafels en H2-ruimte.

hashtag
Oefening: H3-bereken-btw

hashtag
Leerdoelen

  • gebruik van string interpolation

hashtag
Functionele analyse

Een programma vraagt een bedrag en vervolgens btw percentage in te geven waarna het bedrag incl. btw-percentage wordt weergegeven.

hashtag
Technische analyse

Noem de methode voor deze oefening BerekenBtw.

hashtag
voorbeeldinteractie(s)

hashtag
Technische hulp

hashtag
Programmaverloop

Het bedrag dat wordt ingevoerd moet geconverteerd worden naar een int met Convert.ToInt32.

Pas string interpolatie toe om de output te tonen.

hashtag
Testscenario's

  • Typ tekst in

  • Geef een veel te groot bedrag in

hashtag
Oefening: H3-leetspeak

hashtag
Leerdoelen

  • functionaliteit van strings leren kennen

hashtag
Functionele analyse

We willen tekst omvormen naar een ander formaat. Laat de gebruiker een lijn tekst ingeven en haal er alle tussenliggende spaties uit en vervang de a's door @

hashtag
Technische analyse

Gebruik Console.ReadLine om tekst in te lezen en hou bij in een variabele. Pas de nodige string methodes toe om het resultaat te verkrijgen. Noem je methode voor dit programma LeetSpeak.

hashtag
Programmaverloop

hashtag
Testscenario's

  • test met een zin zonder a's

  • test met een zin met vijf a's of meer

  • test met een lege string

hashtag
Oefening: H3-instructies

hashtag
Leerdoelen

  • leren werken met stringinterpolatie

  • leren werken met methodes van strings

hashtag
Functionele analyse

We willen met behulp van een programma instructies genereren voor de gebruiker. Meerbepaald wordt automatisch aangegeven in welke map de gebruiker bepaalde bestanden op een UNIX-achtig systeem moet bijhouden.

Voor deze oefening is het verplicht gebruik te maken van een (geïnterpoleerde) string.

hashtag
Technische analyse

Op basis van de voornaam van de student en de naam van de cursus wordt de map gegeven die de student moet aanmaken (/home/, eerste 3 letters voornaam, in hoofdletters met submap de naam van de cursus. Noem je methode Instructies.

hashtag
Programmaverloop

hashtag
Oefening: H3-lotto

hashtag
Leerdoelen

  • functionaliteit van strings

  • stringinterpolatie

hashtag
Functionele analyse

De gebruiker voert zijn lottocijfers in. We willen deze op een overzichtelijke manier weergeven.

hashtag
Technische analyse

Laat de lottocijfers allemaal achter elkaar ingeven, gescheiden door komma's, zonder spaties. De gebruiker wordt verondersteld cijfers onder de 10 in te geven voorafgegaan door een nul. Gebruik de juiste methode om de cijfers uit te string te "knippen" en gebruik het karakter | om de uitvoer te scheiden. Noem je methode Lotto.

hashtag
Voorbeeldinteractie

hashtag
Oefening: H3-som-van-cijfers

hashtag
Leerdoelen

  • functionaliteit van strings

  • stringinterpolatie

hashtag
Functionele analyse

De gebruiker voert een getal in. Het programma berekent de som van de cijfers in de decimale voorstelling van dit getal.

hashtag
Technische analyse

We veronderstellen dat de gebruiker een getal van exact vijf cijfers ingeeft, desnoods vooraan opgevuld met nullen. Noem je methode SomVanCijfers.

hashtag
Voorbeeldinteractie

Onderstaand voorbeeld komt uit op 27, want 6 + 3 + 9 + 2 + 7 is 27.

hashtag
Oefening: H3-naam-uit-mail

hashtag
Leerdoelen

  • functionaliteit van strings

  • stringinterpolatie

hashtag
Functionele analyse

De gebruiker voert een e-mailadres in. Jouw programma toont hieruit het gedeelte dat de naam voorstelt, in hoofdletters.

hashtag
Technische analyse

We veronderstellen dat de gebruiker een juist mailadres invult. Noem je methode NaamUitEmail.

hashtag
Voorbeeldinteractie

hashtag
Oefening: H3-eerste-letter-en-achternaam

hashtag
Leerdoelen

  • functionaliteit van strings

  • stringinterpolatie

hashtag
Functionele analyse

De gebruiker voert zijn naam in. Je programma toont dan de eerste letter van de voornaam en de familienaam.

hashtag
Technische analyse

We veronderstellen dat de gebruiker een voornaam zonder spaties invult. Noem je methode EersteLetterEnAchternaam.

hashtag
Voorbeeldinteractie

hashtag
Oefening: H3-toegangscode

hashtag
Leerdoelen

  • functionaliteit van strings

  • stringinterpolatie

  • omzetting tussen tekst en getal

hashtag
Functionele analyse

De gebruiker voert enkele persoonlijke gegevens in en op basis hiervan wordt een persoonlijke toegangscode gegenereerd.

hashtag
Technische analyse

Noem je methode Toegangscode. De code van vier tot vijf cijfers wordt als volgt bepaald:

  • het eerste symbool is de voorlaatste letter van de naam, in kleine letters

  • het tweede symbool is de laatste letter van de naam, in hoofdletters

  • het derde symbool is het laatste cijfer van het geboortejaar

hashtag
Voorbeeldinteractie

hashtag

Voer geen tekst in
het vierde (en eventueel vijfde) symbool is het eerste cijfer van de postcode, in het kwadraat (dus vermenigvuldigd met zichzelf)

Strings

hashtag
String

Een string is een reeks van 0, 1 of meerdere lettertekens, zoals je ook kan zien als je even met je muis boven een string keyword hovert in je code:

hashtag
Strings declareren

Merk op dat we bij een string literal gebruik maken van aanhalingstekens (") terwijl bij chars we een apostrof gebruiken ('). Dit is de manier om een string van een char te onderscheiden.

Volgende code geeft twee keer het cijfer 1 onder elkaar op het scherm, maar de eerste keer gaat het om de weergave van een string (reeks van tekens) en de tweede keer van een int (effectief getal):

De output van dit programma zal dan zijn:

Fout gebruik van strings zal code geven die niet zal gecompileerd worden:

  1. In de tweede toekenning proberen we een literal van het type int toe te kennen aan een variabele van het type string.

  2. In de laatste toekenning proberen we een literal van het type string toe te kennen aan een variabele van het type int.

Welke tekst moet ik omzetten?
> Hello World
HELLO WORLD
Geef je tekst in
> Oefening baart kunst!
Oefeningb@@rtkunst!
Wat is je naam?
> Vincent
Wat is de naam van de cursus?
> Programmeren
Maak een map als volgt: /home/VIN/Programmeren
Wat zijn je cijfers (tussen 01 en 45)?
> 05,08,13,18,27,44
Je cijfers zijn:
05|08|13
18|27|44
Gelieve een getal in te voeren dat bestaat uit exact 5 decimale cijfers.
> 63927
De som is 27.
Geef je e-mailadres:
> ann.debrabandere@ap.be
Je naam uit je e-mail is: ANN.DEBRABANDERE
Geef je naam:
> Ann De Brabandere
De eerste letter van je naam is: A.
Je achternaam is: De Brabandere
Geef je naam: > Janssens
Geef je geboortejaar: > 2001
Geef je postcode: > 2000
Je toegangscode is nS14
string eenString = "1"; 
int eenGetal = 1;

Console.WriteLine(eenString);
Console.WriteLine(eenGetal);

Strings samenvoegen

circle-check

Kennisclip voor deze inhoudarrow-up-right

hashtag
Strings samenvoegen

Je kan strings en variabelen samenvoegen tot een nieuwe string op verschillende manieren. We bekijken volgende twee mogelijkheden:

  • +-operator

  • $ string interpolation

circle-exclamation

Gebruik zelf stringinterpolatie tenzij het anders gevraagd wordt. Dit is bijna altijd de handigste manier. Online kom je nog (vooral oudere) code tegen die het anders doet, maar we geven deze bewust niet omdat stringinterpolatie bijna altijd het beste werkt.

hashtag
In dit hoofdstuk

We gaan van volgende informatie uit:

  • Stel dat je 2 variabelen hebt int age=13 en string name="Finkelstein".

  • We willen de inhoud van deze variabelen samenvoegen in een nieuwe string result die zal bestaan uit de tekst:

    Ik ben Finkelstein en ik ben 13 jaar oud.

Volgende 2 manieren tonen hoe je steeds tot voorgaande string zal komen.

hashtag
Manier 1: String samenvoegen met de +-operator

Als je de + tussen strings plaatst, krijgt deze operator een andere betekenis dan tussen getallen. De strings worden dan achter elkaar geplakt. Als iets geen string is en op deze manier wordt gebruikt, wordt eerst een tekstvoorstelling bepaald, zoals hieronder bij age (want dat is een int).

Op het eerste zicht is dit een eenvoudige manier om strings op te bouwen, maar ze heeft een paar belangrijke nadelen:

  • je moet vaak afwisselen tussen aanhalingstekens en plustekens

  • het is lastig spaties en leestekens juist te noteren op deze manier (merk op dat de stukken tekst in het voorbeeld spaties op de zijkanten bevatten)

  • er komt vrij veel extra werk bij kijken als je data in een specifiek formaat wil weergeven, bijvoorbeeld met een specifiek aantal cijfers na de komma

circle-info

We geven deze manier van werken vooral mee omdat ze in héél veel programmeertalen bestaat en omdat ze simpel is. Ze is niet bijzonder goed.

hashtag
Manier 2: String interpolation met $

Via stringinterpolatie schrijf je je string min of meer zoals hij er uiteindelijk moet uitzien, maar vervang je de niet-letterlijke delen door geformatteerde waarden. Dit levert een goed leesbaar resultaat.

Door het $-teken VOOR de string te plaatsen geef je aan dat alle delen in de string die tussen accolades staan als code mogen beschouwd worden. Een voorbeeld maakt dit duidelijk:

In dit geval zal dus de inhoud van de variabele name tussen de string op de plek waar nu {name} staat geplaatst worden. Idem voor age. Dit mag, zelfs al is age geen string: hetgeen tussen de accolades staat, wordt altijd intern omgezet naar een string voor het in het resultaat wordt geplaatst.

Functionaliteit van strings

Strings bevatten veel ingebouwde functionaliteit. Als je deze leert gebruiken, kan je al snel nuttige programmaatjes voor tekstverwerking schrijven.

hashtag
Length

De lengte van een string is het aantal symbolen in de weergegeven versie. Je plaatst .Length achter de string om de lengte te weten te komen. Enkele voorbeelden:

hashtag
Substring

Een string is een reeks van 0 of meer symbolen in een bepaalde volgorde. Dat wil zeggen dat we elk symbool een nummer kunnen toekennen. Misschien wat vreemd, maar het eerste symbool krijgt nummer 0, het tweede krijgt nummer 1, het derde nummer 2,... en het laatste krijgt een nummer gelijk aan de Length van de string min één. Dit nummer heet de index van het symbool.

We kunnen een substring (= deel van een string) opvragen door de index van het eerste symbool en de lengte mee te geven als volgt:

Je mag de lengte achterwege laten om vanaf de gegeven index tot het einde van de string te gaan:

Deze methode verandert een string niet. Er is geen enkele methode die dat doet, want je kan een string niet veranderen in C#. Je kan er alleen een nieuwe mee bouwen. De methode berekent wel een nieuwe string met de gewenste eigenschappen. Dit is een belangrijk onderscheid. Volgende drie voorbeelden tonen het verschil. Voer uit en verklaar.

circle-exclamation

Onthoud het goed: je kan een string niet aanpassen in C#. We kunnen alle gevolgen hiervan nog niet uitleggen, maar het is wel zo.

hashtag
IndexOf

Een index is, zoals hierboven aangegeven, de positie van een teken in de string. Als we willen weten waar een bepaalde substring in een string voorkomt, gebruiken we IndexOf:

hashtag
ToUpper / ToLower

Met deze twee methodes bereken je een versie van de string waarop je ze toepast, maar dan in hoofdletters of in kleine letters. Let op: je past de oorspronkelijke string niet aan!

hashtag
Replace

Met deze methode kan je een substring vervangen door een andere substring. Ook deze methode past de oorspronkelijke tekst niet aan.

hashtag
TrimStart / TrimEnd / Trim

Met deze methodes verwijder je witruimte (spaties, tabs, newlines,...) aan het begin of aan het einde van een string:

1
1
string eenString = 1; //fout
int eenGetal = "1"; //fout
Console.WriteLine("hallo".Length); // levert 5 want: 5 symbolen in de uiteindelijke weergave
Console.WriteLine("hallo ".Length); // levert 6 want: 6 symbolen in de uiteindelijke weergave

als je grote, complexe strings op deze manier opbouwt, kost het erg veel rekentijd

string result = "Ik ben " + name + " en ik ben " + age + " jaar oud.";
string result = $"Ik ben {name} en ik ben {age} jaar oud.";
Console.WriteLine("Hallo, wereld".Substring(4,5)); // toont o, we
Console.WriteLine("Hallo, wereld".Substring(4)); // toont o, wereld
string hallo1 = "hallo";
hallo1.substring(0,2);
Console.WriteLine(hallo1);
string hallo1 = "hallo";
Console.WriteLine(hallo1.substring(0,2));
string hallo1 = "hallo";
string hallo2 = hallo1.substring(0,2);
Console.WriteLine(hallo2);
Console.WriteLine("C# is cool".IndexOf("cool")); // geeft 6
Console.WriteLine("C# is cool".IndexOf("z")); // geeft -1 want komt niet voor
Console.WriteLine("C# is cool".IndexOf("Cool")); // geeft -1 want "Cool" MET HOOFDLETTER komt niet voor
Console.WriteLine("C# is cool".ToUpper()); // C# IS COOL
Console.WriteLine("C# is cool".ToLower()); // c# is cool
string tekst = "DiT iS EnGe TeKsT";
tekst.ToLower();
Console.WriteLine(tekst); // DiT iS EnGe TeKsT -> tekst wordt niet aangepast door ToLower
tekst.ToUpper();
Console.WriteLine(tekst); // DiT iS EnGe TeKsT -> tekst wordt niet aangepast door ToLower
string berekendeTekst = tekst.ToUpper();
Console.WriteLine(berekendeTekst); // DIT IS ENGE TEKST -> uit tekst is iets anders berekend, wel in hoofdletters
Console.WriteLine("C# is cool".Replace("C#","Racket")); // Racket is cool
Console.WriteLine("C# is cool".Replace("Java","Racket")); // C# is cool -> Java kwam niet voor dus is niet vervangen
string tekst = "C# is cool";
tekst.Replace("C#","Racket");
Console.WriteLine(tekst); // C# is cool -> uit tekst is iets anders berekend, tekst is niet aangepast
Console.WriteLine("     C# is cool".TrimStart()); // C# is cool, eerste teken is C en geen spatie
Console.WriteLine("C# is cool     ".TrimEnd()); // zelfde resultaat
Console.WriteLine("    C# is cool     ".Trim()); // zelfde resultaat