Buscar..


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

Observaciones

La interpolación de cadenas es una forma abreviada del método string.Format() 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"

Expresiones

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

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

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

Demo en vivo en .NET Fiddle

Formato de 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 puede usar el método DateTime.ToString para formatear el objeto DateTime . Esto producirá la misma salida 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 el 11 de noviembre de 2015, pide un deseo!

Demo en vivo en .NET Fiddle

Demo en vivo usando DateTime.ToString

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

Uso simple

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

Entre bastidores

Internamente esto

$"Hello, {name}!" 

Se compilará a algo como esto:

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

Relleno de la salida

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

${value, padding}

NOTA: Los valores de relleno positivos indican el relleno izquierdo y los valores de relleno negativos indican el 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.

Demo en vivo en .NET Fiddle

Relleno derecho

El relleno derecho, que utiliza 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   .

Demo en vivo en .NET Fiddle

Relleno con especificadores de formato

También puede utilizar 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 ";
//                                                           ^^^^^

Demo en vivo en .NET Fiddle

Formateo de números en cadenas

Puede usar dos puntos y la sintaxis de formato numérico estándar para controlar cómo se formatean 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"

Demo en vivo en .NET Fiddle



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow