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 mellanrum \\ Backslash \ EC Utbildning AB 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 Formateras för att visa Exempel 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 med ett antal värdesiffror 123,00 General G eller g Antingen som exponentiell eller fixed decimal, beroende på vilken som är mest kompakt 123 EC Utbildning AB 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); //"2,50 %" string quantitystring = String.Format("{0:f0}", 15000.78); //"15001" string paymentstring = String.Format("{0:f3}", 432.8175); //"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