Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial, vas a crear una pequeña aplicación basada en archivos que imprime un resumen de pedido con formato. Durante el proceso, aplicas interpolación de cadenas para insertar valores en un texto, dar formato a números y valores monetarios, alinear columnas y generar una salida adaptada a la configuración regional.
En este tutorial se supone que está familiarizado con los conceptos básicos de C#. Para obtener una referencia detallada de la sintaxis de interpolación, consulte Interpolación de cadenas.
Prerequisites
- Sdk de .NET 10 o una versión posterior. Las aplicaciones basadas en archivos requieren .NET 10 o posterior.
- Un editor de código, como Visual Studio Code.
Creación de la aplicación
Una aplicación basada en archivos es un único .cs archivo que se ejecuta sin un archivo de proyecto. Cree una carpeta para la aplicación y muévala a ella:
mkdir StringInterpolation
cd StringInterpolation
Cree un archivo vacío denominado report.cs en esa carpeta y ábralo en el editor. Agregue código a él en las secciones siguientes y ejecute la aplicación con dotnet run report.cs.
Insertar valores en texto
Anteponga $ a una cadena literal para convertirla en una cadena interpolada. Dentro de la cadena, coloque cualquier expresión de C# entre llaves ({ y }); C# evalúa la expresión, convierte el resultado en una cadena e lo inserta.
Agregue el código siguiente a report.cs y, a continuación, ejecute la aplicación con dotnet run report.cs:
string name = "Maria";
int itemCount = 3;
// Prefix a string literal with $ to interpolate expressions inside braces.
Console.WriteLine($"Hello, {name}! You have {itemCount} items in your cart.");
// => Hello, Maria! You have 3 items in your cart.
El resultado combina el texto literal con los valores de name y itemCount.
Dar formato a números y monedas
Un resumen del pedido muestra dinero y tarifas, por lo que los números sin procesar como 23.5 o 0.08 parecen inconclusos y difíciles de leer. Presentar cada valor como espera un cliente: un precio con un símbolo de moneda y una tasa fiscal como porcentaje. Dale formato como parte de la interpolación.
Para dar formato a un valor, siga la expresión con dos puntos (:) y una cadena de formato. Las cadenas de formato estándar y C generan porcentajes P0 de moneda y números enteros. Añada el siguiente código al final del archivo:
decimal subtotal = 23.5m;
decimal taxRate = 0.08m;
// Follow an expression with :format to apply a standard or custom format string.
Console.WriteLine($"Subtotal: {subtotal:C}");
Console.WriteLine($"Tax rate: {taxRate:P0}");
Console.WriteLine($"Total: {subtotal * (1 + taxRate):C}");
// => Subtotal: $23.50
// => Tax rate: 8%
// => Total: $25.38
La cadena de formato aplica las convenciones de la referencia cultural actual, por lo que el símbolo de moneda y los separadores coinciden con la configuración de la máquina.
Alineación de valores en columnas
Al imprimir varias filas de datos, los valores de diferentes longitudes dejan las columnas desiguales y difíciles de examinar. Para alinear cada nombre y número bajo un encabezado coherente, asigne a cada campo un ancho fijo para que las columnas permanezcan rectas independientemente del tiempo que tenga cada valor.
Para establecer un ancho de campo mínimo, siga la expresión con una coma (,) y el ancho. Un ancho positivo alinea el valor a la derecha; un ancho negativo lo alinea a la izquierda. Combine el ancho y una cadena de formato como {expression,width:format}. Agregue el código siguiente para imprimir un resumen tabular:
(string Name, int Quantity, decimal Price)[] orders =
[
("Espresso", 2, 3.50m),
("Cappuccino", 1, 4.25m),
("Tea", 4, 2.00m),
];
// Follow an expression with ,width to set a minimum field width.
// A positive width right-aligns; a negative width left-aligns.
foreach (var order in orders)
{
Console.WriteLine($"{order.Name,-12}{order.Quantity,3}{order.Price * order.Quantity,10:C}");
}
// => Espresso 2 $7.00
// => Cappuccino 1 $4.25
// => Tea 4 $8.00
La columna de nombre alineado a la izquierda y las columnas numéricas alineadas a la derecha se alinean en una tabla legible.
Generar un resultado adaptado a una cultura concreta
Una cadena interpolada usa la referencia cultural actual de forma predeterminada. Cuando necesite una referencia cultural específica, como un formato fijo para registros o una configuración regional para un recibo, pase una referencia cultural a String.Create(IFormatProvider, DefaultInterpolatedStringHandler). Agregue el siguiente código:
decimal total = 1234.56m;
// An interpolated string uses the current culture by default.
// Use string.Create with a culture to control the formatting explicitly.
string germanReceipt = string.Create(
new CultureInfo("de-DE"), $"Gesamt: {total:C}");
string invariantLog = string.Create(
CultureInfo.InvariantCulture, $"total={total:F2}");
Console.WriteLine(germanReceipt);
Console.WriteLine(invariantLog);
// => Gesamt: 1.234,56 €
// => total=1234.56
El recibo alemán utiliza una coma como separador decimal y el símbolo del euro. El registro invariable usa un punto y ningún símbolo, independientemente de la referencia cultural de la máquina.
Pasos siguientes
Ha usado la interpolación de cadenas para insertar, dar formato, alinear y localizar valores. Para consultar el conjunto completo de características de la interpolación de cadenas, incluidos los literales de cadena sin formato, las llaves de escape y las cadenas interpoladas constantes, consulte el artículo conceptual: