Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu vytvoříte malou aplikaci založenou na souborech , která vytiskne souhrn formátovaných objednávek. V průběhu použijete interpolaci řetězců k vložení hodnot do textu, formátování čísel a měn, zarovnání sloupců a vytvoření výstupu specifického pro dané národní prostředí.
V tomto kurzu se předpokládá, že znáte základní koncepty jazyka C#. Přehled syntaxe interpolace po jednotlivých prvcích naleznete v tématu Interpolace řetězců.
Předpoklady
- .NET 10 SDK nebo novější verze. Souborové aplikace vyžadují .NET 10 nebo novější.
- Editor kódu, například Visual Studio Code.
Vytvoření aplikace
Aplikace založená na souborech je jeden .cs soubor, který spustíte bez souboru projektu. Vytvořte složku pro aplikaci a přesuňte se do ní:
mkdir StringInterpolation
cd StringInterpolation
V této složce vytvořte prázdný soubor s názvem report.cs a otevřete ho v editoru. V následujících oddílech do něj přidáte kód a potom aplikaci spustíte pomocí dotnet run report.cs.
Vložení hodnot do textu
Přidejte před řetězcový literál $, aby se z něj stal interpolovaný řetězec. Do řetězce vložte libovolný výraz jazyka C# do složených závorek ({ a }); Jazyk C# vyhodnotí výraz, převede výsledek na řetězec a vloží ho.
Do report.cs přidejte následující kód a pak spusťte aplikaci: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.
Výsledek kombinuje literálový text s hodnotami name a itemCount.
Formátování čísel a měny
Souhrn objednávky zobrazuje částky a sazby, takže prostá čísla, jako jsou 23.5 nebo 0.08, působí nedokončeně a špatně se čtou. Prezentujte každou hodnotu tak, jak zákazník očekává: cenu se symbolem měny a sazbou daně v procentech. Naformátujte ho jako součást interpolace.
Chcete-li naformátovat hodnotu, uveďte za výrazem dvojtečku (:) a formátovací řetězec. Standardní formátovací C řetězce a P0 vytvářejí měnu a celočíselnou procentuální hodnotu. Na konec souboru přidejte následující kód:
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
Formátovací řetězec uplatňuje konvence aktuálního národního prostředí, takže symbol měny a oddělovače odpovídají nastavení počítače.
Zarovnat hodnoty do sloupců
Když vytisknete několik řádků dat, hodnoty různých délek způsobí, že sloupce budou nezarovnané a obtížně čitelné. Pokud chcete zarovnat každý název a číslo pod konzistentním nadpisem, dejte každému poli pevnou šířku, aby sloupce zůstaly rovné bez ohledu na délku každé hodnoty.
Pokud chcete nastavit minimální šířku pole, postupujte podle výrazu s čárkou (,) a šířkou. Kladná šířka zarovná hodnotu doprava; záporná šířka ji zarovná doleva. Zkombinujte šířku a formátovací řetězec jako {expression,width:format}. Přidejte následující kód pro tisk tabulkového souhrnu:
(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
Sloupec s názvy zarovnaný doleva a číselné sloupce zarovnané doprava vytvářejí přehlednou tabulku.
Vytvořit kulturně specifický výstup
Interpolovaný řetězec ve výchozím nastavení používá aktuální kulturu. Potřebujete-li konkrétní národní prostředí, například pevný formát pro protokoly nebo národní prostředí pro účtenku, předejte do String.Create(IFormatProvider, DefaultInterpolatedStringHandler) parametr národního prostředí. Přidejte následující kód:
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
Německá účtenka používá čárku jako oddělovač desetinných míst a symbol eura. Invariantní protokolování používá tečku a žádný symbol bez ohledu na národní nastavení počítače.
Další kroky
K vložení, formátování, zarovnání a lokalizaci hodnot jste použili interpolaci řetězců. Úplnou sadu funkcí interpolace, včetně nezpracovaných řetězcových literálů, řídicích závorek a konstantních interpolovaných řetězců, najdete v článku o konceptu: