Øvelse – Find indre margen og justering
- 12 minutter
Metoden string.Format() bruges til at udføre sammensat formatering, f.eks. i eksemplet:
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
Det kan have virket lidt mærkeligt, at et nøgleord, der repræsenterer en datatype, har metoder, du kan kalde på samme måde, som du kalder metoder på Console klassen. Faktum er, at der er mange lignende metoder på string datatypen og en hvilken som helst konstantstreng eller variabel af typen streng.
Her er en kort liste over kategorier af disse indbyggede metoder, så du kan få en idé om, hvad der er muligt.
- Metoder, der tilføjer tomme mellemrum til formateringsformål (
PadLeft(),PadRight()) - Metoder, der sammenligner to strenge eller faciliterer sammenligningen (
Trim(),TrimStart(),TrimEnd(),GetHashcode(), egenskabenLength) - Metoder, der hjælper dig med at bestemme, hvad der er i en streng, eller endda kun hente en del af strengen (
Contains(),StartsWith(),EndsWith(),Substring()) - Metoder, der ændrer indholdet af strengen ved at erstatte, indsætte eller fjerne dele (
Replace(),Insert(),Remove()) - Metoder, der omdanner en streng til en matrix af strenge eller tegn (
Split(),ToCharArray())
Formatering af strenge ved at tilføje mellemrum før eller efter
Metoden PadLeft() tilføjer tomme mellemrum i venstre side af strengen, så det samlede antal tegn er lig med det argument, du sender det. I dette tilfælde skal strengens samlede længde være 12 tegn.
Slet eller brug linjekommentaroperatoren
//til at kommentere hele koden fra de forrige øvelser.Opdater din kode i Visual Studio Code Editor på følgende måde:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));Vælg Gemi menuen Visual Studio Code File . Gem den Program.cs fil, før du bygger eller kører koden.
Højreklik på TestProjecti panelet EXPLORER for at åbne en Terminal på mappen TestProject, og vælg derefter Åbn i integreret terminal. Der skal åbnes et terminalpanel, og det skal indeholde en kommandoprompt, der viser, at Terminalen er åben for din TestProject-mappeplacering.
I kommandoprompten Terminal skal du skrive dotnet run og derefter trykke på Enter for at køre din kode.
Seddel
Hvis du får vist en meddelelse med teksten "Et projekt, der ikke kan køres", skal du kontrollere, at terminalkommandoprompten viser den forventede placering af mappen TestProject. Eksempel:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Når du kører koden, kan du se, at længden på fire tegn foran venstre i strengen er 12 tegn lang.
Pad thisHvis du vil tilføje mellemrum eller tegn i højre side af strengen
PadRight(), skal du i stedet bruge metoden . 1. Opdater din kode i Visual Studio Code Editor på følgende måde:Console.WriteLine(input.PadRight(12));Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du kan ikke se nogen tegn, der er føjet til slutningen af strengen, men de er der.
Hvad er en overbelastet metode?
I C#er en overbelastet metode en anden version af en metode med forskellige eller ekstra argumenter, der ændrer metodens funktionalitet en smule, som det er tilfældet med den overbelastede version af PadLeft() metoden.
Du kan også kalde en anden overbelastet version af metoden og angive det tegn, du vil bruge, i stedet for et mellemrum. I dette tilfælde udfylder du det ekstra mellemrum med tankestregtegnet.
Slet eller brug linjekommentaroperatoren
//til at kommentere hele koden fra det forrige trin.Opdater din kode i Visual Studio Code Editor på følgende måde:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør kunne se fire tankestreger foran venstre for strengen, der er 12 tegn lang.
----Pad this Pad this----
Anvend nu denne nyfundne viden på et andet scenarie i den virkelige verden.
Arbejde med margenstrenge
Lad os antage, at du arbejder for et betalingsbehandlingsfirma, der stadig understøtter ældre mainframe-systemer. Disse systemer kræver ofte, at data angives i bestemte kolonner. Gem f.eks. betalings-id'et i kolonne 1 til 6, modtagerens navn i kolonne 7 til 30 og Betalingsbeløb i kolonner 31 til og med 40. Det er også vigtigt, at betalingsbeløbet er højrejusteret.
Du bliver bedt om at oprette et program, der konverterer data i relationsdatabasestyringssystemet til det ældre filformat. For at sikre, at integrationen fungerer korrekt, er det første trin at bekræfte filformatet ved at give de ældre systemvedholdere et eksempel på outputtet. Senere bygger du videre på dette arbejde for at sende hundred- eller tusindvis af betalinger, der skal behandles via en ASCII-tekstfil.
Føj betalings-id'et til outputtet
Du kommer i gang ved at udskrive betalings-id'et i de første seks kolonner. Du vælger nogle tilfældige betalingsdata, der skal være tilstrækkelige til formålet.
Slet eller brug linjekommentaroperatoren
//til at kommentere hele koden fra det forrige trin.Opdater din kode i Visual Studio Code Editor på følgende måde:
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);Genbrug variablen
formattedLinefor at oprette outputstrengen.Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør kunne se følgende output:
769C
Der er to tomme mellemrum til højre, som ikke er synlige. Du skal bekræfte, at de findes i næste trin.
Føj modtagerens navn til outputtet
Derefter skal du tilføje et fiktivt betalingsnavn og udfylde det korrekt.
Opdater din kode i Visual Studio Code Editor på følgende måde:
string paymentId = "769C"; string payeeName = "Mr. Stephen Ortega"; var formattedLine = paymentId.PadRight(6); formattedLine += payeeName.PadRight(24); Console.WriteLine(formattedLine);Operatoren
+=udfører en strengsammenkædning ved at tage den forrige værdi af variablenformattedLineog føje den nye værdi til den. Det er en forkortet ækvivalent til følgende kodeeksempel:formattedLine = formattedLine + payeeName.PadRight(24);Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør kunne se følgende output:
769C Mr. Stephen Ortega
Igen er der en hel del tomme mellemrum efter betalingsmodtagerens navn. Der er også to tomme mellemrum efter betalings-id'et fra trin 1.
Føj betalingsbeløbet til outputtet
Tilføj derefter et fiktivt betalingsbeløb, og sørg for at bruge PadLeft() til at højrejustere outputtet.
Opdater din kode i Visual Studio Code Editor på følgende måde:
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);Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør kunne se følgende output:
769C Mr. Stephen Ortega $5,000.00
Dette output er temmelig tæt på det, du forstod de ældre systemvedholdere ledte efter.
Tilføj en tallinje over outputtet for nemmere at bekræfte resultatet
Da det er svært at tælle de nøjagtige kolonner, hvor hvert dataelement vises, kan du tilføje en linje direkte over outputtet, der hjælper dig med at tælle kolonnerne.
Console.WriteLine("1234567890123456789012345678901234567890");
Opdater din kode i Visual Studio Code Editor på følgende måde:
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);Gem din kodefil, og brug derefter Visual Studio Code til at køre din kode. Du bør kunne se følgende output, som du kan sende til vedligeholderne af det ældre system for at bekræfte, at den nye integration fungerer korrekt:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
Succes!
Resumé
Der er et par vigtige takeaways fra dette undermodul.
- Datatypen
string, konstantstrenge og variabler af typen streng implementerer hver især mange hjælpemetoder til at formatere, ændre og udføre andre handlinger på strenge. - Metoderne
PadLeft()ogPadRight()føjer blanktegn (eller eventuelt et andet tegn) til den samlede længde af en streng. - Bruges
PadLeft()til at højrejustere en streng. - Nogle metoder er overbelastede, hvilket betyder, at de har flere versioner af metoden med forskellige argumenter, der påvirker deres funktionalitet.
- Operatoren
+=sammenkæder en ny streng til højre til den eksisterende streng til venstre.