Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben az oktatóanyagban egy kis fájlalapú alkalmazást hoz létre, amely formázott megrendelések összegzését nyomtatja ki. Az út során sztringinterpolációt alkalmaz az értékek szövegbe való beszúrására, számok és pénznemek formázására, oszlopok felsorolására, valamint kultúraspecifikus kimenet létrehozására.
Ez az oktatóanyag feltételezi, hogy ismeri az alapvető C# fogalmakat. Az interpolációs szintaxis funkciónkénti hivatkozását a Sztring interpoláció című témakörben talál.
Prerequisites
- A .NET 10 SDK vagy egy újabb verzió. A fájlalapú alkalmazásokhoz 10-.NET vagy újabb verzióra van szükség.
- Kódszerkesztő, például Visual Studio Code.
Az alkalmazás létrehozása
A fájlalapú alkalmazás egyetlen .cs fájlból áll, amely projektfájl nélkül futtatható. Hozzon létre egy mappát az alkalmazáshoz, és lépjen bele:
mkdir StringInterpolation
cd StringInterpolation
Hozzon létre egy report.cs nevű üres fájlt a mappában, és nyissa meg a szerkesztőben. A következő szakaszokban kódot ad hozzá, és a(z) dotnet run report.cs használatával futtatja az alkalmazást.
Értékek beszúrása szövegbe
Sztringkonstans előtagja $interpolált sztringként. A sztringen belül helyezzen bármilyen C#-kifejezést kapcsos zárójelekbe ({ és }); A C# kiértékeli a kifejezést, sztringgé alakítja az eredményt, és beszúrja.
Adja hozzá a következő kódot a report.cs fájlhoz, majd futtassa az alkalmazást ezzel: dotnet run report.cs
string name = "Maria";
int itemCount = 3;
// Prefix a string literal with $ to interpolate expressions inside braces.
Console.WriteLine($"Hello, {name}! You have {itemCount} items in your cart.");
// => Hello, Maria! You have 3 items in your cart.
Az eredmény a szó szerinti szöveget a(z) name és itemCount értékeivel kombinálja.
Számok és pénznem formázása
A rendelés összegzése pénzösszegeket és arányokat jelenít meg, ezért az olyan nyers számok, mint a 23.5 vagy a 0.08, befejezetlennek hatnak és nehezen olvashatók. Adja meg az egyes értékeket úgy, ahogyan az ügyfél elvárja: egy pénznemszimbólummal ellátott árat és százalékos adókulcsot. Formázza az interpoláció részeként.
Egy érték formázásához kövesse a kettőspontot (:) és egy formázási sztringet tartalmazó kifejezést. A(z) C és P0 szabványos formátumsztringek pénznemet és egész százalékos értékeket eredményeznek. Adja hozzá a következő kódot a fájl végéhez:
decimal subtotal = 23.5m;
decimal taxRate = 0.08m;
// Follow an expression with :format to apply a standard or custom format string.
Console.WriteLine($"Subtotal: {subtotal:C}");
Console.WriteLine($"Tax rate: {taxRate:P0}");
Console.WriteLine($"Total: {subtotal * (1 + taxRate):C}");
// => Subtotal: $23.50
// => Tax rate: 8%
// => Total: $25.38
A formátumsztring az aktuális kultúra konvencióira vonatkozik, így a pénznemszimbólum és az elválasztójel megegyezik a gép beállításaival.
Értékek igazítása oszlopokhoz
Ha több adatsort nyomtat ki, a különböző hosszúságú értékek egyenetlenné teszik az oszlopokat, ezért azok nehezen áttekinthetők. Ha konzisztens címsor alatt szeretné felsorakozni az egyes neveket és számokat, adjon minden mezőt rögzített szélességűnek, hogy az oszlopok egyenesek maradjanak, függetlenül attól, hogy mennyi ideig tart az egyes értékek.
A minimális mezőszélesség beállításához a kifejezés után írjon vesszőt (,), majd a mezőszélességet. A pozitív szélesség jobbra igazítja az értéket; negatív szélesség balra igazítja. Egyesítse a szélességet és a formátumkarakterláncot így: {expression,width:format}. Táblázatos összegzés nyomtatásához adja hozzá a következő kódot:
(string Name, int Quantity, decimal Price)[] orders =
[
("Espresso", 2, 3.50m),
("Cappuccino", 1, 4.25m),
("Tea", 4, 2.00m),
];
// Follow an expression with ,width to set a minimum field width.
// A positive width right-aligns; a negative width left-aligns.
foreach (var order in orders)
{
Console.WriteLine($"{order.Name,-12}{order.Quantity,3}{order.Price * order.Quantity,10:C}");
}
// => Espresso 2 $7.00
// => Cappuccino 1 $4.25
// => Tea 4 $8.00
A balról igazított névoszlop és a jobbra igazított numerikus oszlopok olvasható táblázatba állnak.
Kultúraspecifikus kimenet előállítása
Az interpolált sztring alapértelmezés szerint az aktuális kultúrát használja. Ha egy adott kultúrára van szüksége, például a naplók rögzített formátumához vagy egy nyugtához használt területi beállításhoz, adjon meg egy kultúrát a(z) String.Create(IFormatProvider, DefaultInterpolatedStringHandler) számára. Adja hozzá a következő kódot:
decimal total = 1234.56m;
// An interpolated string uses the current culture by default.
// Use string.Create with a culture to control the formatting explicitly.
string germanReceipt = string.Create(
new CultureInfo("de-DE"), $"Gesamt: {total:C}");
string invariantLog = string.Create(
CultureInfo.InvariantCulture, $"total={total:F2}");
Console.WriteLine(germanReceipt);
Console.WriteLine(invariantLog);
// => Gesamt: 1.234,56 €
// => total=1234.56
A német nyugtán vesszőt használnak tizedeselválasztóként, és az euró szimbólumát. Az invariáns napló a gép kultúrájától függetlenül egy pontot és szimbólumot használ.
Következő lépések
Sztringinterpolációval szúrt be, formázott, igazított és lokalizált értékeket. Az interpoláció funkcióinak teljes körével kapcsolatban – beleértve a nyers sztringkonstansokat, az escape-elt kapcsos zárójeleket és a konstans interpolált sztringeket – lásd a következő ismertető cikket:
Lásd még
- Karakterlánc-interpoláció a C# nyelvben
- Összetett formázás
Formázási típusok a .NET - String.Format