String.Format
Toda aplicación que maneje datos tiene que formatearlos. La clase String dispone del método Format que nos permite formatear una expresión de entrada.
No sé vosotros, pero yo siempre olvido los formatos y como obtener los resultados de una u otra forma. Navengando por ahí encontre un sitio que mostraba de forma bastante clara los diferentes formatos (http://idunno.org/archive/2004/14/01/122.aspx)
Lo que aqui vamos a hacer es ampliar un poco la información que se muestra en dicha página e incluir algunos ejemplos.
example | output |
---|---|
String.Format(«–{0,10}–«, «test»); | — test– |
String.Format(«–{0,-10}–«, «test»); | –test — |
|
Formatos estandar de números
Cuando utilizamos los formatos estandar para foramtear números o fechas, lo que estamos haciendo es emplear la configuración que hayamos definido en el panel de control. Es importante tener en cuenta que esta configuración se lee del equipo que ejecuta la aplicacion, no del que la visualiza – por ejemplo, una aplicación web tomará los valores del servidor no del cliente que accede a la página.
|
|
Una vez que sabemos a que nos referimos con formatos estandar, podemos entender la siguiente tabla , que muestra los identificadores de formatos estandar.
specifier | type | format | output (double 1.2345) |
output (int -12345) |
---|---|---|---|---|
c | currency | {0:c} | €1.23 | -€12,345.00 |
d | decimal (whole number) |
{0:d} | System.FormatException | -12345 |
e | exponent / scientific | {0:e} | 1.234500e+000 | -1.234500e+004 |
f | fixed point | {0:f} | 1.23 | -12345.00 |
g | general | {0:g} | 1.2345 | -12345 |
n | number | {0:n} | 1.23 | -12,345.00 |
r | round trippable | {0:r} | 1.23 | System.FormatException |
x | hexadecimal | {0:x4} | System.FormatException | ffffcfc7 |
El siguiente ejemplo muestra como formatear un valor numérico con el especificador «c», de currency (moneda).
|
Podemos especificar que se aplique la configuración de una cultura especifica en lugar de la definida en el panel de control a través de la clase CultureInfo.
|
Formato personalizado de números.
También podemos forzar el formato de forma manual, independientemente del formato definido en el sistema.
specifier | type | format | output (double 1234.56) |
---|---|---|---|
0 | zero placeholder | {0:00.000} | 1234.560 |
# | digit placeholder | {0:#.##} | 1234.56 |
. | decimal point placeholder | {0:0.0} | 1234.6 |
, | thousand separator | {0:0,0} | 1,235 |
% | percentage | {0:0%} | 123456% |
El siguiente ejemplo muestra como especificar manualmente el formato.
|
Por supuesto podemos formatear más de un valor.
|
Formato estandar de fechas
También podemos formatear fechas del mismo modo, en este caso los formatos estandar y personalizados cambian, pero representan el mismo concepto explicado anteriormente.
specifier | type | output (June 8, 1970 12:30:59) |
---|---|---|
d | Short Date | 08/06/1970 |
D | Long Date | 08 June 1970 |
t | Short Time | 12:30 |
T | Long Time | 12:30:59 |
f | Full date and time | 08 June 1970 12:30 |
F | Full date and time (long) | 08 June 1970 12:30:59 |
g | Default date and time | 08/06/1970 12:30 |
G | Default date and time (long) | 08/06/1970 12:30:59 |
M | Day / Month | 8 June |
r | RFC1123 date string | Mon, 08 Jun 1970 12:30:59 GMT |
s | Sortable date/time | 1970-06-08T12:30:59 |
u | Universal time, local timezone | 1970-06-08 12:30:59Z |
Y | Month / Year | June 1970 |
El siguiente ejemplo muestra como formatear la fecha de hoy con formato de fecha larga completa, «F».
|
Formato personalizado de fechas
Del mismo modo podemos personalizar el formato de las fechas. La siguiente tabla muestra los distintos formatos disponibles.
specifier | type | output (June 8, 1970 12:30:59) |
---|---|---|
dd | Day | 08 |
ddd | Short Day Name | Mon |
dddd | Full Day Name | Monday |
hh | 2 digit hour | 12 |
HH | 2 digit hour (24 hour) | 12 |
mm | 2 digit minute | 30 |
MM | Month | 06 |
MMM | Short Month name | Jun |
MMMM | Month name | June |
ss | seconds | 59 |
tt | AM/PM | PM |
yy | 2 digit year | 70 |
yyyy | 4 digit year | 1970 |
: | seperator, e.g. {0:hh:mm:ss} | 12:30:59 |
/ | seperator, e.g. {0:dd/MM/yyyy} | 08/06/1970 |
El siguiente ejemplo muestra aplicar un formato personalizado a un fecha.
|