Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa esercitazione si crea una piccola app basata su file che stampa un riepilogo dell'ordine formattato. Nel corso della procedura, si applica l'interpolazione di stringhe per inserire valori in testo, formattare numeri e valuta, allineare le colonne e produrre un output specifico delle impostazioni cultura.
Questa esercitazione presuppone che si abbia familiarità con i concetti di base di C#. Per informazioni di riferimento sulle funzionalità della sintassi di interpolazione, vedere Interpolazione di stringhe.
Prerequisiti
- .NET 10 SDK o versione successiva. Le app basate su file richiedono .NET 10 o versione successiva.
- Un editor di codice, ad esempio Visual Studio Code.
Creare l'app
Un'app basata su file è un singolo .cs file eseguito senza un file di progetto. Crea una cartella per l'app e spostati al suo interno:
mkdir StringInterpolation
cd StringInterpolation
Creare un file vuoto denominato report.cs in tale cartella e aprirlo nell'editor. Aggiungere codice alle sezioni seguenti ed eseguire l'app con dotnet run report.cs.
Inserire valori nel testo
Anteporre un valore letterale stringa con $ per renderla una stringa interpolata. All'interno della stringa inserire qualsiasi espressione C# tra parentesi graffe ({ e }); C# valuta l'espressione, converte il risultato in una stringa e lo inserisce.
Aggiungere il codice seguente a report.cs, quindi eseguire l'app con 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.
Il risultato combina il testo letterale con i valori di name e itemCount.
Formattare numeri e valuta
Un riepilogo degli ordini mostra denaro e tariffe, quindi numeri non elaborati come 23.5 o 0.08 sembrano incompiuti e difficili da leggere. Presentare ogni valore nel modo previsto da un cliente: un prezzo con un simbolo di valuta e un tasso di imposta come percentuale. Formattarlo come parte dell'interpolazione.
Per formattare un valore, seguire l'espressione con due punti (:) e una stringa di formato. Le stringhe C di formato standard e P0 producono percentuali di valuta e numeri interi. Aggiungere il codice seguente alla fine del file:
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
La stringa di formato applica le convenzioni delle impostazioni cultura correnti, quindi il simbolo di valuta e i separatori corrispondono alle impostazioni del computer.
Allineare i valori in colonne
Quando si stampano diverse righe di dati, i valori di lunghezze diverse lasciano le colonne sgonfie e difficili da analizzare.When you print several rows of data, values of different lengths leave the columns ragged and hard to scan. Per allineare ogni nome e numero sotto un'intestazione coerente, assegnare a ogni campo una larghezza fissa, in modo che le colonne rimangano dritte indipendentemente dalla durata di ogni valore.
Per impostare una larghezza minima del campo, seguire l'espressione con una virgola (,) e la larghezza. Una larghezza positiva allinea il valore a destra; una larghezza negativa lo allinea a sinistra. Combinare la larghezza e una stringa di formato nel formato {expression,width:format}. Aggiungere il codice seguente per stampare un riepilogo tabulare:
(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
La colonna dei nomi allineata a sinistra e le colonne numeriche allineate a destra formano una tabella leggibile.
Produrre output specifico delle impostazioni locali
Una stringa interpolata usa per impostazione predefinita le impostazioni cultura correnti. Quando serve una cultura specifica, ad esempio un formato fisso per i log o un'impostazione locale per una ricevuta, passare una cultura a String.Create(IFormatProvider, DefaultInterpolatedStringHandler). Aggiungere il codice seguente:
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
La ricevuta tedesca utilizza una virgola come separatore decimale e il simbolo euro. Il log invariante usa un punto e senza alcun simbolo, indipendentemente dalle impostazioni locali del computer.
Passaggi successivi
È stata usata l'interpolazione di stringhe per inserire, formattare, allineare e localizzare i valori. Per la gamma completa delle funzionalità di interpolazione, inclusi i letterali di stringa non elaborati, le parentesi graffe con escape e le stringhe interpolate costanti, vedere l'articolo concettuale: