C#:cómo usar cadenas de formato con interpolación de cadenas

C#:cómo usar cadenas de formato con interpolación de cadenas

Las cadenas interpoladas tienen la siguiente estructura:{variable:formato}. Por lo general, excluye el formato, por lo que normalmente se ven así:$”Mi nombre es {nombre}”.

Aquí se explica cómo usar cadenas de formato con una cadena interpolada:

decimal orderAmount = 10.2322m;
Console.WriteLine($"You owe: {orderAmount:C}");
Code language: C# (cs)

Esto genera lo siguiente:

You owe: $10.23Code language: plaintext (plaintext)

Este es el equivalente de usar string.Format() así:

string.Format("{0:C}", orderAmount)
Code language: C# (cs)

Como puede ver, especificar una cadena de formato con una cadena interpolada es prácticamente lo mismo que lo haría con string.Format(). De hecho, puede usar las mismas cadenas de formato estándar y cadenas de formato personalizado. Lo único que es un poco diferente es cómo especificas la cultura.

En este artículo, mostraré más ejemplos del uso de cadenas de formato con cadenas interpoladas, incluido cómo especificar la referencia cultural.

Especificando la cultura

Las cadenas interpoladas usan de forma predeterminada la referencia cultural actual. Si desea especificar la cultura, debe convertir la cadena interpolada como FormattableString, luego llamar a .ToString() y pasar la cultura.

Esto es bastante detallado. Puede dividirlo en varias líneas o tener una sola línea muy densa, de la siguiente manera:

//multiple lines
FormattableString s = $"You owe: {orderAmount:C}";
var f = s.ToString(CultureInfo.GetCultureInfo("en-GB"));
Console.WriteLine(f);

//very dense 1 liner
Console.WriteLine(((FormattableString)$"You owe: {orderAmount:C}").ToString(CultureInfo.GetCultureInfo("en-GB")));
Code language: C# (cs)

Esto genera lo siguiente:

You owe: £10.23Code language: plaintext (plaintext)

Esto es equivalente al siguiente método string.Format():

string.Format(CultureInfo.GetCultureInfo("en-GB"), "You owe: {0:C}", orderAmount)
Code language: C# (cs)

Es posible que prefiera el enfoque string.Format() aquí. Es menos detallado, pero pierde los beneficios de la interpolación de cadenas.

Otras cadenas de formato

Puede utilizar cadenas de formato estándar o cadenas de formato personalizado con interpolación de cadenas. Mostraré algunos ejemplos más a continuación.

1 – Mostrar solo los últimos 3 lugares decimales

A continuación se muestra cómo usar una cadena de formato personalizado para mostrar los últimos 3 decimales de un número:

decimal orderAmount = 10.2322m;
Console.WriteLine($"3 decimal places: {orderAmount:0.###}");
Code language: C# (cs)

Esto genera lo siguiente:

3 decimal places: 10.232Code language: plaintext (plaintext)

2:muestra la hora actual, incluido el desplazamiento de la zona horaria

Esto muestra cómo usar una cadena de formato de fecha/hora personalizada para mostrar la hora y la diferencia de zona horaria.

DateTime now = DateTime.Now;
Console.WriteLine($"Current time: {now:h:mm:ss tt K}");
Code language: C# (cs)

Esto genera lo siguiente:

Current time: 8:13:12 AM -05:00Code language: plaintext (plaintext)

3 – Mostrar un número de teléfono en formato de Estados Unidos

Esto muestra cómo usar una cadena de formato personalizado para mostrar un número de teléfono de Estados Unidos de 10 dígitos (nota:este es un número de teléfono falso) .

long phone = 5555555555;
Console.WriteLine($"Phone number: {phone:(###) ###-####}");
Code language: C# (cs)

Esto genera lo siguiente:

Phone number: (555) 555-5555Code language: plaintext (plaintext)