Övning – Identifiera utfyllnad och justering
- 12 minuter
Metoden string.Format()
används för att utföra sammansatt formatering, till exempel:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Det kan ha verkat lite konstigt att ett nyckelord som representerar en datatyp har metoder som du kan anropa på samma sätt som du anropar metoder i Console
klassen. Faktum är att det finns många liknande metoder för string
datatypen och valfri literalsträng eller variabel av typsträng.
Här är en kort lista med kategorier av dessa inbyggda metoder så att du kan få en uppfattning om vad som är möjligt.
- Metoder som lägger till tomma blanksteg i formateringssyfte (
PadLeft()
,PadRight()
) - Metoder som jämför två strängar eller underlättar jämförelse (
Trim()
, ,TrimEnd()
TrimStart()
,GetHashcode()
egenskapenLength
) - Metoder som hjälper till att fastställa vad som finns inuti en sträng eller till och med hämta endast en del av strängen (
Contains()
,StartsWith()
,EndsWith()
ochSubstring()
) - Metoder som ändrar innehållet i strängen genom att ersätta, infoga eller ta bort delar (
Replace()
,Insert()
ochRemove()
) - Metoder som konverterar en sträng till en matris med strängar eller tecken (
Split()
, ochToCharArray()
)
Formatera strängar genom att lägga till tomt utrymme före eller efter
Metoden PadLeft()
lägger till tomma blanksteg till vänster i strängen så att det totala antalet tecken är lika med argumentet du skickar det. I det här fallet vill du att strängens totala längd ska vara 12 tecken.
Ta bort eller använd radkommentarsoperatorn
//
för att kommentera ut all kod från föregående övningar.Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));
På menyn Visual Studio Code-fil väljer du Spara. Spara filen Program.cs innan du skapar eller kör koden.
I explorer-panelen öppnar du en terminal på mappen TestProject genom att högerklicka på TestProject och sedan välja Öppna i integrerad terminal. En terminalpanel bör öppnas och bör innehålla en kommandotolk som visar att terminalen är öppen för mappen TestProject.
I kommandotolken i Terminal skriver du dotnet run och trycker sedan på Retur för att köra koden.
Kommentar
Om du ser ett meddelande med texten "Det gick inte att hitta ett projekt att köra" kontrollerar du att Terminal-kommandotolken visar den förväntade platsen för TestProject-mappen. Till exempel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
När du kör koden ser du fyra tecken som är prefixet till vänster om strängen, vilket gör att längden blir 12 tecken lång.
Pad this
Om du vill lägga till tomt utrymme eller tecken till höger i strängen använder du metoden
PadRight()
i stället. 1. Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:Console.WriteLine(input.PadRight(12));
Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du ser inga tecken som har lagts till i slutet av strängen, men de finns där.
Vad är en överlagrad metod?
I C# är en överbelastad metod en annan version av en metod med olika eller extra argument som ändrar metodens funktionalitet något, vilket är fallet med den överlagrade versionen av PadLeft()
metoden.
Du kan även anropa en andra överlagrad version av metoden och skicka in valfritt tecken som du vill använda i stället för ett blanksteg. I det här fallet fyller du det extra utrymmet med bindestreckstecknet.
Ta bort eller använd radkommentarsoperatorn
//
för att kommentera ut all kod från föregående steg.Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));
Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du bör se fyra bindestreck som prefixar till vänster om strängen som är 12 tecken lång.
----Pad this Pad this----
Tillämpa nu den här nyfunna kunskapen på ett annat verkligt scenario.
Arbeta med vadderade strängar
Anta att du arbetar för ett betalningsbearbetningsföretag som fortfarande har stöd för äldre stordatorsystem. Dessa system kräver ofta att data matas in i specifika kolumner. Du kan till exempel lagra betalnings-ID:t i kolumnerna 1 till 6, betalningsmottagarens namn i kolumnerna 7 till och med 30 och betalningsbeloppet i kolumnerna 31 till och med 40. Dessutom är betalningsbeloppet rätt justerat.
Du uppmanas att skapa ett program som konverterar data i relationsdatabashanteringssystemet till det äldre filformatet. För att säkerställa att integreringen fungerar korrekt är det första steget att bekräfta filformatet genom att ge de äldre systemunderhållarna ett exempel på utdata. Senare bygger du vidare på det här arbetet för att skicka hundratals eller tusentals betalningar som ska bearbetas via en ASCII-textfil.
Lägg till betalnings-ID:t i utdata
Kom igång genom att skriva ut betalnings-ID:t i de sex första kolumnerna. Du väljer några slumpmässiga betalningsdata som bör vara tillräckliga för ändamålen.
Ta bort eller använd radkommentarsoperatorn
//
för att kommentera ut all kod från föregående steg.Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);
Återanvänd variabeln
formattedLine
för att skapa utdatasträngen.Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du bör se följande utdata:
769C
Det finns två tomma blanksteg till höger som inte visas. Du bekräftar att de finns i nästa steg.
Lägg till betalningsmottagarens namn i utdata
Sedan lägger du till ett fiktivt payee-namn och lägger till det på rätt sätt.
Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);
+=
-operatorn utför en strängsammanfogning där det föregående värdet för variabelnformattedLine
läggs ihop med det nya värdet. Det är en förkortad motsvarighet i följande kodexempel:formattedLine = formattedLine + payeeName.PadRight(24);
Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du bör se följande utdata:
769C Mr. Stephen Ortega
Återigen finns det några tomma blanksteg efter betalningsmottagarens namn. Dessutom finns det två tomma blanksteg efter betalnings-ID från steg 1.
Lägg till betalningsbeloppet i utdata
Lägg sedan till ett fiktivt betalningsbelopp och se till att använda PadLeft()
för att justera utdata.
Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine(formattedLine);
Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du bör se följande utdata:
769C Mr. Stephen Ortega $5,000.00
Den här utdatan ligger ganska nära det som du förstod att de äldre systemunderhållarna letade efter.
Lägg till en rad med tal ovanför utdata för att enklare bekräfta resultatet
Eftersom det är svårt att räkna de exakta kolumnerna där varje dataelement visas lägger du till en rad direkt ovanför utdata som hjälper dig att räkna kolumnerna.
Console.WriteLine("1234567890123456789012345678901234567890");
Uppdatera koden i Visual Studio Code-redigeraren på följande sätt:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; string paymentAmount = "$5,000.00"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); formattedLine += paymentAmount.PadLeft(10); Console.WriteLine("1234567890123456789012345678901234567890"); Console.WriteLine(formattedLine);
Spara kodfilen och använd sedan Visual Studio Code för att köra koden. Du bör se följande utdata som du kan skicka till underhållarna av det äldre systemet för att bekräfta att den nya integreringen fungerar korrekt:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
Lyckades!
Sammanfattning
Det finns några viktiga lärdomar från den här lektionen.
- Datatypen
string
, literalsträngar och variabler av strängtyp implementerar många hjälpmetoder för att formatera, ändra och utföra andra åtgärder på strängar. - Metoderna
PadLeft()
ochPadRight()
lägger till tomma utrymmen (eller valfritt annat tecken) till den totala längden för en sträng. - Använd
PadLeft()
för att högerjustera en sträng. - Vissa metoder är överlagrade, vilket innebär att de har flera versioner av metoden med olika argument som påverkar funktionen.
- Operatorn
+=
sammanfogar en ny sträng till höger om den befintliga strängen till vänster.