Formato de String o String Formatting en C#
Si te gusta los posts en mi blog, por favor sígueme en Twitter bajo @lalfarod para ver mis aportaciones.
Amigos,
Espero que estén bien, les quiero comentar que el día de hoy tuve muchas preguntas de cómo poder hacer un formato para diferentes tipos de string, como fechas, enteros, decimales, etc.
Bueno, voy a escribir este post para ayudar a todos :) Espero que les sea útil.
1) Empecemos con los strings:
Para los strings no hay mucho que hacer en el tema de colocar un formato, más que todo únicamente se puede jugar con la alineación o alineamiento de los caracteres como lo muestro a continuación.
|
Ejemplo
|
Resultado
|
|
String.Format(”->{1,10}<-”, “Hola”);
|
-> Hola<-
|
|
String.Format(”->{1,-10}<-”, “Hola”);
|
->Hola <-
|
Si se dan cuenta, en el primer ejemplo se coloca un espacio en blanco al principio y en el segundo se lo coloca al final.
2) Números
2.1) Formato básico de números:
|
Especificador
|
Tipo
|
Formato
|
Salida (Parámetro 2.50)
|
Salida (Parámetro - 12400)
|
|
c
|
Currency
|
{0:c}
|
$2.50
|
-$12,400
|
|
d
|
Decimal (Numero Entero)
|
{0:d}
|
System.FormatException
|
-12400
|
|
e
|
Scientific
|
{0:e}
|
2.500000e+000
|
-1.240000e+004
|
|
f
|
Fixed point
|
{0:f}
|
2.50
|
-12400.00
|
|
g
|
General
|
{0:g}
|
2.50
|
-12400
|
|
n
|
Number (Numero con comas para los miles)
|
{0:n}
|
2.50
|
-12,400
|
|
r
|
Round trippable
|
{0:r}
|
2.50
|
System.FormatException
|
|
x
|
Hexadecimal
|
{0:x4}
|
System.FormatException
|
cf90
|
Ejemplo: string.Format("{0:c}", 2.50) 
2.2) Diferentes formatos más complejos para los números:
|
Especificador
|
Ejemplo
|
Salida (Parámetro Double 1500.42)
|
|
0
|
{0:00.0000}
|
1500.4200
|
|
#
|
{0:(#).##}
|
(1500).42
|
|
.
|
{0:0.0}
|
1500.4
|
|
,.
|
{0:0,.}
|
2
|
|
%
|
{0:0%}
|
150042%
|
|
e
|
{0:00e+0}
|
15e+2
|
|
|
|
Ejemplo: string.Format("{0:0.0}", 1500.42) 
2) Fechas
Con las fechas hay que hacer la observación que estas dependen de su configuración regional que tengan en su máquina o servidor, los resultados que voy a mostrar son para mi configuración persona.
|
Especificador
|
Tipo
|
Ejemplo
|
Salida (El parámetro System.DateTime.Now)
|
Nota
|
|
d
|
Short date
|
{0:d}
|
13/03/2009
|
Fecha corta
|
|
D
|
Long date
|
{0:D}
|
viernes, 13 de marzo de 2009
|
Fecha Larga
|
|
t
|
Short time
|
{0:t}
|
06:15 p.m.
|
Hora corta
|
|
f
|
Full date & time
|
{0:f}
|
viernes, 13 de marzo de 2009 06:16 p.m.
|
Fecha y hora
|
|
F
|
Full date & time (long)
|
{0:F}
|
viernes, 13 de marzo de 2009 06:17:03 p.m.
|
Fecha y hora larga
|
|
g
|
Default date & time
|
{0:g}
|
13/03/2009 06:17 p.m.
|
Fecha y hora predeterminada
|
|
G
|
Default date & time (long)
|
{0:G}
|
13/03/2009 06:18:47 p.m.
|
Fecha y hora predeterminada larga
|
|
M
|
Month day pattern
|
{0:M}
|
13 marzo
|
Dia y Mes
|
Ejemplo: string.Format("{0:M}", DateTime.Now) 
| Especificador |
Tipo |
Ejemplo |
Salida (El parametro System.DateTime.Now) |
Nota |
| dd |
Day |
{0:dd} |
10 |
Dia |
| ddd |
Day name |
{0:ddd} |
Vie |
Nombre del Dia |
| dddd |
Full day name |
{0:dddd} |
Viernes |
Nombre del Dia completo |
| f, ff, … |
Second fractions |
{0:fff} |
923 |
Segundos |
| gg, … |
Era |
{0:gg} |
D.C. |
|
| hh |
2 digit hour |
{0:hh} |
10 |
Hora en dos digitos |
| HH |
2 digit hour, 24hr format |
{0:HH} |
22 |
|
| mm |
Minute 00-59 |
{0:mm} |
38 |
|
| MM |
Month 01-12 |
{0:MM} |
12 |
|
| MMM |
Month abbreviation |
{0:MMM} |
Mar |
|
| MMMM |
Full month name |
{0:MMMM} |
Marzo |
|
| ss |
Seconds 00-59 |
{0:ss} |
46 |
|
| tt |
AM or PM |
{0:tt} |
PM |
|
| yy |
Year, 2 digits |
{0:yy} |
2 |
|
| yyyy |
Year |
{0:yyyy} |
2009 |
|
| zz |
Timezone offset, 2 digits |
{0:zz} |
-5 |
|
| zzz |
Full timezone offset |
{0:zzz} |
-05:00 |
|
| : |
Separator |
{0:hh:mm:ss} |
10:43:20 |
|
| / |
Separator |
{0:dd/MM/yyyy} |
11/03/2009 |
|
Espero que les haya servido este post, como siempre estoy a sus ordenes.
Un Saludo,
Luis Antonio Alfaro