C# Language
Interpolación de cuerdas
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!"
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 usando DateTime.ToString
Nota:
MM
significa meses ymm
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.
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 .
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 ";
// ^^^^^
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"