CSharp2 -Strängar och formatering

Strängar
1
© Elektronikcentrum i Svängsta AB
Strängar
• Strängar
– Vanligtvis arbetar man i en applikation med
text av olika slag.
– I programmeringsvärden sparar man text i
strängar, (eng. strings).
– Dessa är alltså en följd av tecken som kan
vara:
• Alfanumeriska: ”Hello”, ”123”, ”string951” och
• Specialtecken: ” ”, ”#&/%”
© EC Utbildning AB
2013-01-15
2
Strängar
• Strängar
– Man kan bygga ihop flera strängar med
plusoperatorn
• Exempel: string str = ”Jag är ” + ” en sträng”;
– Det går även att lägga till värden från
andra variabler på detta sätt så man enkelt
kan presentera värden.
– Använder vi operatorn + mellan strängar
kan vi även dela upp text på flera rader.
© EC Utbildning AB
2013-01-15
3
Strängar
• Strängar
– Exempel:
int answer = 42;
string msg = "Jag är: ";//msg = "Jag är: "
msg += "en sträng!!!"; //msg = "Jag är: en sträng!!!"
msg = "answer" + " = "
+ answer;
//msg = "answer = 42“
msg =
+
+
+
"Jag är en sträng som "
"innehåller mycket text. "
"Därför är jag uppdelad på "
"flera rader.";
© EC Utbildning AB
2013-01-15
4
Strängar
• Escape-sekvenser
– Escape-sekvenser är speciella tecken som
kan ingå i en sträng och börjar alltid med
ett backslash (\-tecknet)
Tecken
Beskrivning
Exempel
\"
Citattecken
"ett citat"
\n
Ny rad (new line)
Rad 1
Rad 2
\t
Tab
Mer
\\
Backslash
\
© EC Utbildning AB
mellanrum
2013-01-15
5
Strängar
• Escape-sekvenser
string text = "John\nDoe";
text = "\"Extra\"\t\tSpace";
text = "Ett citat:\n"
+ "\"Programmering är kul\"\n\n"
+ "\tKälla: en programmerare";
John
Doe
"Extra"
Space
Ett citat:
"Programmering är kul"
Källa: en programmerare
© EC Utbildning AB
2013-01-15
6
Strängar
• Escape-sekvenser
– Om du vill att strängen inte ska generera
några dessa kan de stängas av med @före strängen
– Detta innebär att strängen blir ”verbatim”
• Texten tolkas precis som de är skrivna, tecken
för tecken.
• Enda undantaget är citattecken (”) som
definieras av två stycken citattecken efter
varandra ("").
– @-symbolen måste finnas framför alla
strängar.
© EC Utbildning AB
2013-01-15
7
Strängar
• Escape-sekvenser
– Exempel på användning av verbatim
//Båda strängarna tolkas som
//C:\SharePoint\CSharp\Projects
string path = "C:\\SharePoint\\CSharp\\Projects";
string fldr = @"C:\SharePoint\CSharp\Projects"
string verbatim = @"\tecken \tolkas \noggrant, "
+ @"utom tecknet "" som skrivs med två citattecken";
\tecken \tolkas \noggrant, utom tecknet " som skrivs med två citattecken
© EC Utbildning AB
2013-01-15
8
Strängformatering
9
© Elektronikcentrum i Svängsta AB
Strängformatering
• Formatering av nummer i strängar
– När vi skriver ut värden på variabler vill vi
ofta ha dessa formaterade på ett speciellt
sätt.
– Exempelvis vill man skriva ut värdena som
valuta eller med ett visst antal värdesiffror.
– Med hjälp av de strängformateringar som
finns inbyggda i .NET får vi ännu bättre
kontroll över hur våra data ska
presenteras.
© EC Utbildning AB
2013-01-15
10
Strängformatering
• Strängformatering
– De vanligaste formateringarna:
Typ
Kod
Currency
C eller c som valuta (lokalt)
123,00 kr
Percent
P eller p som procent (1 = 100%)
0,15 %
Exponential
E eller e med vetenskaplig notaton
1,234567e+006
Fixed Decimal F eller f
General
Formateras för att visa
med ett antal värdesiffror
G eller g Antingen som exponentiell
eller fixed decimal, beroende
på vilken som är mest
kompakt
© EC Utbildning AB
Exempel
123,00
123
2013-01-15
11
Strängformatering
• Strängformatering
– För att använda en formatering behöver vi
kunna skicka med formateringskoden.
– Detta kan göras på olika sätt:
• Alla datatyper (och klasser) har en metod som
heter .ToString() som konverterar värdet till en
sträng. I denna kan vi skicka med
formateringskoden som en parameter.
• I Console.WriteLine() samt den statiska
metoden String.Format().
– Här skriver man värdets index, sedan dess position
inom måsvingar. Exempelvis ”{0:e}” för att formatera
det första elementet.
© EC Utbildning AB
2013-01-15
12
Strängformatering
• Strängformatering
– Det går även att definiera precisionen för vår
formatering. Detta görs genom att ange
precisionen direkt efter formateringskoden
decimal theCost = 1547.2m;
int someBigNumber = 1499900;
//Using .ToString() on the variables
string cost = theCost.ToString("c");
//"1.547,20 kr"
string bigNumber = someBigNumber.ToString("e2");//"1,50e+006"
//Using the static method String.Format
string taxRate = String.Format("{0:p}", .025m);
string quantityString = String.Format("{0:f0}", 15000.78);
string paymentString = String.Format("{0:f3}", 432.8175);
//"2,50 %"
//"15001"
//"432,818"
//Using Console.WriteLine()'s built in formatting feature
Console.WriteLine("Current price is {0:c}", theCost);
Console.WriteLine("Using 4 significant digits: {0:g4}", 15000.78);
Current price is 1.547,20 kr
Using 4 significant digits: 1,5e+04
© EC Utbildning AB
2013-01-15
13
Strängformatering
• Strängformatering
– Det går att skicka med flera variabler för
utskrift. Vi kommer åt de olika variablerna
genom att ange dess index
– Ofta inom programmering ligger det första
elementet i en samling med data på
indexplats 0, så även här.
– Vi kan alltså återanvända samma variabel
på flera ställen i en sträng, och i vilken
ordning vi vill.
© EC Utbildning AB
2013-01-15
14
Strängformatering
• Strängformatering
//Declare several variables on the same line
decimal money = 10m, persons = 3m;
decimal result = money / persons;
double x = 4, power = 3;
Console.WriteLine("Ni är {0} personer som ska dela på {1:c}", persons, money);
Console.WriteLine("{0:c} / {1} st = {2:c} per person", money, persons, result);
Console.WriteLine("---");
Console.WriteLine("{0} * {0} * {0} = Math.Pow({0},{1}) = {2}",
x, power, Math.Pow(x, power));
Console.ReadKey();
Ni är 3 personer som ska dela på 10,00 kr
10,00 kr / 3 st = 3,33 kr per person
--4 * 4 * 4 = Math.Pow(4,3) = 64
© EC Utbildning AB
2013-01-15
15
• Övning 1
Skriv ett program enligt anvisningarna nedan.
Läser in för och efternamn samt ålder.
Detta skall sedan presenteras på följande vis med förnamn och efternamn
och åldern enligt vetenskaplig notation.
Skriv sedan ut samma sak men byt plats på för och efternamn utan att
byta plats på variablerna på raden.
. Formateringen ska göras med formateringssträngarna.
© EC Utbildning AB
2013-01-15
16
• Övnign 2
Skriv ett program enligt anvisningarna nedan.
I en affär kostar en produkt 200 kr. Då den inte sålde så bra har man lagt på en
rabatt på 40 %. Din uppgift är nu att skriva ut dessa värden, samt det nya priset.
Utskriften ska vara rätt formaterad, alltså all presentation av priser ska anges som
valuta och rabatten ska anges som procent. Formateringen ska göras med
formateringssträngarna.
Rabatten kan beräknas med formeln
newPrice = oldPice*(1-discountRate)
.
© EC Utbildning AB
2013-01-15
17