C# Language
Interpolazione a stringa
Ricerca…
Sintassi
- $ "contenuto {espressione} contenuto"
- $ "contenuto {espressione: formato} contenuto"
- $ "contenuto {espressione} {{contenuto in parentesi}} contenuto}"
- $ "contenuto {espressione: formato} {{contenuto in parentesi}} contenuto}"
Osservazioni
L'interpolazione delle stringhe è una scorciatoia per il metodo string.Format()
che semplifica la creazione di stringhe con valori di variabili ed espressioni al loro interno.
var name = "World";
var oldWay = string.Format("Hello, {0}!", name); // returns "Hello, World"
var newWay = $"Hello, {name}!"; // returns "Hello, World"
espressioni
Le espressioni complete possono anche essere utilizzate in stringhe interpolate.
var StrWithMathExpression = $"1 + 2 = {1 + 2}"; // -> "1 + 2 = 3"
string world = "world";
var StrWithFunctionCall = $"Hello, {world.ToUpper()}!"; // -> "Hello, WORLD!"
Formatta le date nelle stringhe
var date = new DateTime(2015, 11, 11);
var str = $"It's {date:MMMM d, yyyy}, make a wish!";
System.Console.WriteLine(str);
È inoltre possibile utilizzare il metodo DateTime.ToString
per formattare l'oggetto DateTime
. Questo produrrà lo stesso risultato del codice sopra.
var date = new DateTime(2015, 11, 11);
var str = date.ToString("MMMM d, yyyy");
str = "It's " + str + ", make a wish!";
Console.WriteLine(str);
Produzione:
È l'11 novembre 2015, esprimi un desiderio!
Demo live con DateTime.ToString
Nota:
MM
indica mesi emm
per minuti. Fai molta attenzione quando li usi, perché gli errori possono introdurre bug che potrebbero essere difficili da scoprire.
Uso semplice
var name = "World";
var str = $"Hello, {name}!";
//str now contains: "Hello, World!";
Dietro le quinte
Internamente questo
$"Hello, {name}!"
Sarà compilato per qualcosa di simile a questo:
string.Format("Hello, {0}!", name);
Riempimento dell'output
La stringa può essere formattata in modo da accettare un parametro di riempimento che specificherà il numero di posizioni dei caratteri utilizzate dalla stringa inserita:
${value, padding}
NOTA: i valori di riempimento positivo indicano che il riempimento sinistro e i valori di riempimento negativo indicano il riempimento destro.
Padding sinistro
Una spaziatura a sinistra di 5 (aggiunge 3 spazi prima del valore del numero, quindi occupa un totale di 5 posizioni di carattere nella stringa risultante).
var number = 42;
var str = $"The answer to life, the universe and everything is {number, 5}.";
//str is "The answer to life, the universe and everything is 42.";
// ^^^^^
System.Console.WriteLine(str);
Produzione:
The answer to life, the universe and everything is 42.
Imbottitura a destra
Il riempimento destro, che utilizza un valore padding negativo, aggiungerà spazi alla fine del valore corrente.
var number = 42;
var str = $"The answer to life, the universe and everything is ${number, -5}.";
//str is "The answer to life, the universe and everything is 42 .";
// ^^^^^
System.Console.WriteLine(str);
Produzione:
The answer to life, the universe and everything is 42 .
Riempimento con specificatori di formato
Puoi anche usare gli specificatori di formattazione esistenti insieme al padding.
var number = 42;
var str = $"The answer to life, the universe and everything is ${number, 5:f1}";
//str is "The answer to life, the universe and everything is 42.1 ";
// ^^^^^
Formattare i numeri nelle stringhe
È possibile utilizzare i due punti e la sintassi del formato numerico standard per controllare la formattazione dei numeri.
var decimalValue = 120.5;
var asCurrency = $"It costs {decimalValue:C}";
// String value is "It costs $120.50" (depending on your local currency settings)
var withThreeDecimalPlaces = $"Exactly {decimalValue:F3}";
// String value is "Exactly 120.500"
var integerValue = 57;
var prefixedIfNecessary = $"{integerValue:D5}";
// String value is "00057"