Interpolación de cadenas

Interpolación de cadenas

# Formatear fechas en cadenas

var date = new DateTime(2015, 11, 11);
var str = $"It's {date:MMMM d, yyyy}, make a wish!";
System.Console.WriteLine(str);

También puedes usar el DateTime.ToString método para formatear el DateTime objeto. Esto producirá el mismo resultado que el código anterior.

var date = new DateTime(2015, 11, 11);
var str = date.ToString("MMMM d, yyyy");
str = "It's " + str + ", make a wish!";
Console.WriteLine(str);

Salida:

Es 11 de noviembre de 2015, ¡pide un deseo!

Demostración en vivo en .NET Fiddle

Demostración en vivo usando DateTime.ToString

Nota: MM significa meses y mm durante minutos. Tenga mucho cuidado al usarlos, ya que los errores pueden introducir errores que pueden ser difíciles de descubrir.

# Relleno de la salida

La cadena se puede formatear para aceptar un parámetro de relleno que especificará cuántas posiciones de caracteres usará la cadena insertada:

${value, padding}

**NOTA:** Los valores de relleno positivos indican relleno izquierdo y los valores de relleno negativos indican relleno derecho.

# Relleno izquierdo

Un relleno izquierdo de 5 (agrega 3 espacios antes del valor del número, por lo que ocupa un total de 5 posiciones de caracteres en la cadena resultante).

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);

Salida:

The answer to life, the universe and everything is    42.

Demostración en vivo en .NET Fiddle

# Relleno derecho

El relleno derecho, que usa un valor de relleno negativo, agregará espacios al final del valor actual.

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);

Salida:

The answer to life, the universe and everything is 42   .

Demostración en vivo en .NET Fiddle

# Relleno con especificadores de formato

También puede usar los especificadores de formato existentes junto con el relleno.

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

Demostración en vivo en .NET Fiddle

# Expresiones

Las expresiones completas también se pueden usar en cadenas interpoladas.

var StrWithMathExpression = $"1 + 2 = {1 + 2}"; // -> "1 + 2 = 3"

string world = "world";
var StrWithFunctionCall = $"Hello, {world.ToUpper()}!"; // -> "Hello, WORLD!"

Demostración en vivo en .NET Fiddle

# Uso simple

var name = "World";
var str = $"Hello, {name}!";
//str now contains: "Hello, World!";

# Detrás de escena

Internamente esto

$"Hello, {name}!" 

Se compilará a algo como esto:

string.Format("Hello, {0}!", name);

# Formatear números en cadenas

Puede usar dos puntos y la sintaxis de formato numérico estándar para controlar el formato de los números.

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"

Demostración en vivo en .NET Fiddle

# Sintaxis

  • $"contenido {expresión} contenido"
  • $"contenido {expresión:formato} contenido"
  • $"contenido {expresión} { {contenido entre llaves} } contenido}"
  • $"contenido {expresión:formato} { { contenido entre llaves } } contenido}"

# Comentarios

La interpolación de cadenas es una forma abreviada de string.Format() método que facilita la creación de cadenas con valores de variables y expresiones dentro de ellas.

var name = "World";
var oldWay = string.Format("Hello, {0}!", name);  // returns "Hello, World"
var newWay = $"Hello, {name}!";                   // returns "Hello, World"