Formato de cadena
La forma más
común de formatear cadenas es usando string.Format(). En C#, el
método de formato de cadena se usa para insertar el valor de la variable o un
objeto o expresión en otra cadena. Al usar el método string.Format,
podemos reemplazar los elementos de formato en la cadena especificada con la
representación de cadena de los objetos especificados.
var msg = string.Format("There are {0} balls", 3);
Otra forma en que podemos formatear una cadena es
usar el StringBuilder.AppendFormat()
decimal num = 34.53567325m;
var builder = new StringBuilder();
builder.AppendFormat("Format Decimal: {0:n2}", num);
Y la tercera
forma de formatear una cadena es usando:
Console.WriteLine("There are {0} balls", 3);
En .NET 4.6 se agrega un nuevo tipo llamado FormattableString,
que consiste en la cadena de formato a la que se le pasaría string.Format
(e.g. "Hello, {0}");y los argumentos que se le pasarían para
formatearlo. Fundamentalmente, esta información se captura antes de
formatear. Esto le permite ajustar el formato de forma adecuada, más
comúnmente para realizarlo en la referencia cultural invariable, a menudo con
el Invariant staticmétodo. Por ejemplo:
FormattableString y = $"FormattableString: It is now {DateTime.UtcNow}";
Console.WriteLine(FormattableString.Invariant(y));
// Result: FormattableString: It is now 03/18/2021 10:40:45
Especificadores de formato
Aquí hay una
referencia rápida a todos los especificadores de conversión admitidos.
Formatos de números
PERSONAJE |
DESCRIPCIÓN |
USO |
EJEMPLO |
C |
Divisa |
{0:c} |
$ 55.674,74 |
mi |
Científico |
{0:e} |
5.567474e+004 |
F |
Punto fijo |
{0:f} |
55674.74 |
gramo |
General |
{0: g} |
55674.73789621 |
norte |
Separador de mil |
{0:n} |
55.674,74 |
Formatos
personalizados
PERSONAJE |
DESCRIPCIÓN |
USO |
EJEMPLO |
0 |
Marcador de posición cero |
{0:00.00} |
55674.74 |
# |
Marcador
de posición de dígito |
{0:(#).##} |
(55674).74 |
. |
Punto decimal |
{0:0.000} |
55674.738 |
, |
Separador de mil |
{0:0,0} |
55,675 |
% |
Por ciento |
{0:0%} |
5567474% |
Formatos de fecha y
hora
PERSONAJE |
DESCRIPCIÓN |
USO |
EJEMPLO |
d |
Cita corta |
{0:d} |
19-03-2021 |
D |
Fecha larga |
{0:D} |
19 marzo 2021 |
t |
Poco tiempo |
{0:t} |
06:49:20 |
T |
Largo tiempo |
{0:T} |
06:49:20 |
f o f |
Hora de fecha larga |
{0:f} |
19 marzo 2021 06:49:00 |
g o g |
Hora de fecha corta |
{0: g} |
19-03-2021 06:49:44 |
METRO |
Cita corta |
{0:M} |
19 de Marzo |
r |
RFC1123
Cadena de fecha y hora |
{0:r} |
jueves,
19 de marzo de 2021 06:49:22 GMT |
s |
Ordenable Fecha/Hora |
{0: s} |
2021-03-19T06:49:11 |
tu |
Fecha ordenable universal |
{0:u} |
2021-03-19 06:49:49Z |
tu |
Fecha completa universal |
{0:T} |
19 marzo 2021 00:18:55 |
Y |
patrón año mes |
{0:Y} |
marzo, 2021 |
Índice de formato de cadena
Un índice de
argumento de cadena se especifica como un número {}y su posición.
string.Format("There are {0} balls and {1} rackets", 3, 5); // result: There are 3 balls and 5 rackets
Formateo de datos numéricos
Con {0:D}podemos
formatear números en formato decimal.
string.Format("Number: {0:N}", 157); // result: 157,00
También
podemos escribir así:
string.Format("{0:D} {1,6:D}", 634, 868); // result: 634 868
El {0:D}elemento
de formato especifica el primer elemento de la lista de objetos suministrados
que se tomarán y se formatearán en formato decimal. El {1,6:D}elemento
de formato toma el segundo elemento, formatéelo también como decimal y la
longitud de la cadena será de 6 caracteres. Debido a que el número tiene
solo tres caracteres, se alinea a la derecha y se rellena con cadenas vacías.
También
podemos formatear un número en otras notaciones, como científica, monetaria,
porcentual y hexadecimal:
string.Format("Scientific: {0:E}", 157); // result: 1.570000E+002
string.Format("Currency: {0:C}", 157); // result for US locale: $157.00
string.Format("Percent: {0:P}", 157); // result: 15,700.00%
string.Format("Hexadecimal: {0:X}", 157); // result: 9D
Además,
podemos tener alineaciones de formato, que representan un número mínimo de
caracteres para escribir en la salida. Por ejemplo, {0,10}con
alineación a la derecha y alineación a la izquierda, necesitamos especificar
una longitud negativa, como {0,-10}:
string.Format("{0,10}", 1);
// result: 1
DEMOSTRACIÓN
El resultado en la consola