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!"

Live Demo su .NET Fiddle

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!

Live Demo su .NET Fiddle

Demo live con DateTime.ToString

Nota: MM indica mesi e mm 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.

Live Demo su .NET Fiddle

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   .

Live Demo su .NET Fiddle

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 ";
//                                                           ^^^^^

Live Demo su .NET Fiddle

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"

Live Demo su .NET Fiddle



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow