Usare l'interpolazione di stringhe per la costruzione di stringhe formattate
Questa esercitazione descrive come usare l'interpolazione di stringhe per inserire i valori in un'unica stringa. Descrive anche come controllare la formattazione del testo della stringa dei risultati. È necessario usare il browser per scrivere ed eseguire codice C# e visualizzare immediatamente i risultati.
Creare una stringa interpolata
Eseguire il codice seguente nella finestra interattiva. Selezionare il pulsante Attiva modalità messa a fuoco. Digitare quindi il blocco di codice seguente nella finestra interattiva (sostituire <name>
con il proprio nome) e selezionare Esegui:
var name = "<name>";
Console.WriteLine($"Hello, {name}. It's a pleasure to meet you!");
Quando si esegue il codice, Output visualizza una stringa contenente il nome dell'utente nel messaggio di saluto. L'argomento stringa della chiamata del metodo WriteLine è un'espressione di stringa interpolata. Si tratta di un tipo di modello che consente di costruire un'unica stringa detta stringa di risultato da una stringa che include codice incorporato. Le espressioni di stringa interpolata sono particolarmente utili per inserire valori in una stringa o per concatenare (unire) più stringhe.
L'esempio precedente contiene i due elementi che ogni espressione di stringa interpolata deve includere:
Un valore letterale stringa che inizia con il carattere
$
prima delle virgolette inglesi aperte. Tra il simbolo$
e le virgolette non devono essere presenti spazi. Per vedere che cosa accade se si include uno spazio, inserirne uno dopo il carattere$
nella finestra interattiva ed eseguire il codice aggiornato. Il compilatore C# restituisce il messaggio "Carattere '$' imprevisto".Una o più espressioni di interpolazione. Un'espressione di interpolazione è indicata da parentesi graffe di apertura e chiusura (
{
e}
). All'interno delle parentesi graffe è possibile inserire qualsiasi espressione C# che restituisce un valore, inclusonull
.
Ora si proveranno altri esempi di interpolazione di stringhe con altri tipi di dati.
Includere tipi di dati diversi
Nel passaggio precedente è stata usata l'interpolazione di stringhe per inserire una stringa in un'altra. Un'espressione di interpolazione che fa parte di un'espressione di stringa interpolata può avere tuttavia qualsiasi tipo di dati. Includere valori di varie espressioni di tipi di dati in una stringa interpolata.
Nell'esempio seguente viene prima di tutto definita una tupla, dotata di membri Name
, Price
e perPackage
. Eseguire il codice seguente nella finestra interattiva:
var item = (Name: "eggplant", Price: 1.99m, perPackage: 3);
var date = DateTime.Now;
Console.WriteLine($"On {date}, the price of {item.Name} was {item.Price} per {item.perPackage} items.");
L'espressione di interpolazione item.Price
nella stringa interpolata restituisce il testo "1.99" nella stringa del risultato. Questo accade perché, quando il tipo di risultato dell'espressione non è una stringa, il risultato restituisce una stringa nel modo seguente:
Se l'espressione di interpolazione restituisce
null
, viene usata una stringa vuota ("" o String.Empty).Se l'espressione di interpolazione non restituisce
null
, in genere viene chiamato il metodoToString
dell'espressione del risultato.
Nell'output di questo esempio la data è troppo precisa (il prezzo delle melanzane non varia ogni secondo) e il valore del prezzo non indica una valuta. Nel passaggio successivo si apprenderà come risolvere questi problemi controllando la formattazione delle rappresentazioni di stringa dei risultati delle espressioni.
Controllare la formattazione delle espressioni di interpolazione
Nel passaggio precedente sono state inserite nella stringa di risultato due stringhe con formattazione imprecisa. Uno è un valore di data e ora nel quale solo la data risultava corretta. Il secondo è un prezzo che non indica la valuta. Entrambi i problemi sono di facile risoluzione. L'interpolazione di stringhe consente di specificare stringhe di formato che controllano la formattazione di determinati tipi. Modificare la chiamata in Console.WriteLine
dell'esempio precedente in modo da includere le stringhe di formato per le espressioni di data e prezzo, come indicato nella riga seguente:
Console.WriteLine($"On {date:d}, the price of {item.Name} was {item.Price:C2} per {item.perPackage} items");
Per specificare una stringa di formato, aggiungere i due punti (":") e la stringa di formato desiderata dopo l'espressione di interpolazione. "d" è un stringa di formato data e ora standard che rappresenta il formato di data breve. "C2" è una stringa di formato numerico standard che rappresenta un numero come valore di valuta con due cifre dopo il separatore decimale.
Molti tipi delle librerie .NET supportano un set predefinito di stringhe di formato. Tali tipi includono tutti i tipi numerici e i tipi data e ora. Per l'elenco completo dei tipi che supportano le stringhe di formato, vedere Stringhe di formato e tipi della libreria di classe .NET nell'articolo Formattazione di tipi in .NET.
Provare a modificare le stringhe di formato nell'esempio per vedere come cambia la formattazione della stringa di data e ora e del valore numerico. Modificare il valore "d" in {date:d}
inserendo i valori "t" (per visualizzare il formato ora breve), "y" (per visualizzare anno e mese) e "yyyy" (per visualizzare l'anno come numero di quattro cifre). Modificare "C2" in {price:C2}
inserendo "e" (per la notazione esponenziale) e "F3" (per un valore numerico con tre cifre dopo il separatore decimale).
Oltre alla formattazione è possibile controllare la larghezza del campo e l'allineamento delle stringhe formattate incluse nella stringa di risultato. Il passaggio successivo indica come eseguire questa operazione.
Controllare la larghezza del campo e l'allineamento delle espressioni di interpolazione
In genere quando il risultato di un'espressione di stringa interpolata è formattato in stringa, questa viene inclusa in una stringa del risultato senza spazi iniziali o finali. In particolare quando si usa un set di dati, la possibilità di controllare la larghezza di un campo e l'allineamento del testo consente di generare un output più leggibile. Per verificarlo, eseguire il codice seguente:
var inventory = new Dictionary<string, int>()
{
["hammer, ball pein"] = 18,
["hammer, cross pein"] = 5,
["screwdriver, Phillips #2"] = 14
};
Console.WriteLine($"Inventory on {DateTime.Now:d}");
Console.WriteLine(" ");
Console.WriteLine($"|{"Item",-25}|{"Quantity",10}|");
foreach (var item in inventory)
Console.WriteLine($"|{item.Key,-25}|{item.Value,10}|");
I nomi degli elementi vengono allineati a sinistra e le quantità corrispondenti vengono allineate a destra. Per specificare l'allineamento, aggiungere una virgola (",") dopo un'espressione di interpolazione e indicare la larghezza minima del campo. Se il valore specificato è un numero positivo, il campo è allineato a destra. Se è un numero negativo, il campo è allineato a sinistra.
Provare a rimuovere il segno negativo dal codice {"Item",-25}
e {item.Key,-25}
ed eseguire di nuovo l'esempio. Questa volta i nomi degli elementi vengono allineati a destra.
È possibile combinare un identificatore di allineamento e una stringa di formato per un'unica espressione di interpolazione. A tale scopo, specificare prima l'allineamento, seguito da due punti e dalla stringa di formato. Provare il codice seguente, che visualizza tre stringhe formattate con larghezze di campo definite:
Console.WriteLine($"[{DateTime.Now,-20:d}] Hour [{DateTime.Now,-10:HH}] [{1063.342,15:N2}] feet");
Congratulazioni!
È stata completata l'esercitazione interattiva sull'interpolazione di stringhe. È possibile visitare il sito Web .NET per scaricare .NET Core SDK, creare un progetto nel computer e continuare a scrivere codice.
Per altre informazioni, vedere Interpolazione di stringhe.
Hai un problema con questa sezione? In caso di problemi, fornisci feedback per contribuire al miglioramento della sezione.