InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
Métodos Extensores: INNER JOIN
Problemas en la instalación de Visual Studio 2008-Visual studio web authoring component
Redimiento de VS2008
Insertar en una Tabla usando Linq2SQL (Linq To SQL)
Primeros pasos con Linq2SQL (Linq To SQL)

Afiliados
La Web del programador
MundoProgramacion


 
 Versión para imprimir

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      --

 

/*

* Rellena con espacios en blanco por la izquierda

* hasta diez posiciones

*/

Console.WriteLine("{0,10} {1}", "Vaya", "Mundo");

 

/*

* Rellena con espacios en blanco por la derecha

* hasta diez posiciones

*/

Console.WriteLine("{0,-10} {1}", "Vaya", "Mundo");

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.


[Ampliar Imagen]


[Ampliar Imagen]

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).

 

/*

* Devuelve el formato moneda configurado en el panel de control

*/

 

string resultado = String.Format("{0:c}", 100.123);

Console.WriteLine(resultado);

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.

 

/*

* En este ejemplo se formatea  el valor 20 con el formato de

* moneda de gran bretaña, es decir, mostrar  la libra como

* simbolo de moneda

* */

CultureInfo ingles = new CultureInfo("en-GB");

string dato = String.Format(ingles,"Valor:{0:c}", 20);

Console.WriteLine(dato);

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.

 

/*

* Devuelve el número formateado con 4 ceros en la parte decimal

*/

 

string resultado = String.Format("{0:0.0000}", 100.123);

Console.WriteLine(resultado);

Por supuesto podemos formatear más de un valor.

 

/*

* Devuelve el primer número formateado con 4 ceros en la parte
* decimal y el segundo con dos.

*/

 

string resultado = String.Format("{0:0.0000} - {1:0.00}",

100.123, 85.125);

Console.WriteLine(resultado);

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".

 

/*

* Devuelve la fecha formateada en formato largo según la

* configuración del panel de control

*/

 

string resultado = String.Format("Hoy es {0:F}", DateTime.Now);

Console.WriteLine(resultado);

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.

 

/*

* Devuelve la fecha formateada en formato personalizado

*/

 

string resultado = String.Format("Hoy es {0:dddd} {0:dd/MM/yyy}",

DateTime.Now);

Console.WriteLine(resultado);

Saludos, DJK


 Versión para imprimir  Foros de consulta


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

String.Format
Autor: Pedro Herrarte Sánchez
Visitas: 1782 Fecha de publicación: 13/04/2008
Pedro Herrarte, es consultor independiente, ofreciendo sercivios de consultoría, análisis, desarrollo y formación.

Posee mas de diez años de experiencia trabajando para las principales empresas de España.

Es especialista en tecnologías .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE).

Es fundador, diseñador y programador de www.devjoker.com.



devjoker  Lo más nuevo ... Donde se habla ... 
01/07/2008 LinQ To SQL - Un ejemplo sencillo
11/06/2008 Problemas con el diseñador Web de Visual Studio 2008
03/06/2008 Formatear números en SQL Server
07/05/2008 Cómo activar Intelisense (autocompletado) en el Web.config
07/05/2008 Programas Open Source Alternativos
29/04/2008 Leer un campo XML de SQL Server 2005 con C#
22/04/2008 TripleDES - Un ejemplo practico en C#
21/04/2008 Ping
18/04/2008 Mostrar un GridView dentro de un DataList
13/04/2008 String.Format

Útimos temas recibidos en los foros ...
Problema de Proceso con el Timer en c# por BruneX ... [C#] 4 01/07/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 11 02/05/2007
Store Procedure por Sistemas ... [ASP.NET] 7 28/05/2008
como insertar registros en un formulario de visual basic.net desde la base de datos sql server por orlan ... [SQL Server] 2 09/06/2008
problema sql por lourdes ... [SQL Server] 3 01/07/2008
PROBLEMAS CON CONEXION A ACCESS 2007 por daniel ... [Access] 2 19/05/2008
directorio activo y VB.NET por ZICK ... [Visual Basic .NET] 0 02/07/2008
Replica en Sql 2005 por Marcelino ... [SQL] 2 27/05/2008
tablas INDEX BY por Alberto ... [SQL] 0 02/07/2008
Convertir xls en csv por kayu ... [ORACLE] 3 17/06/2008
quiero mi numero de seguro social por margarita figueroa castro ... [Visual Basic .NET] 2 01/07/2008
Crystal Reports - Visual Studio 2005 por Broken ... [ASP.NET] 0 02/07/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
01/06/2006 Cursores de actualización en PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Insertar datos. INSERT    forma parte de...Tutorial SQL
16/04/2007 Mantener variables de Sesión y Aplicación de forma permanente en ASP.net
03/10/2006 Definición de clases    forma parte de...Tutorial C#
21/07/2006 Funciones integradas de PL/SQL    forma parte de...Tutorial PL/SQL
19/10/2005 Una clase sencilla para encriptar cadenas
02/09/2007 Procedimientos almacenados en Transact SQL    forma parte de...Tutorial de Transact SQL
14/01/2008 Novedades Visual Studio 2008 DataSet en 3 capas o MVC
01/01/2006 Borrado de datos. DELETE    forma parte de...Tutorial SQL
19/09/2007 Triggers en Transact SQL    forma parte de...Tutorial de Transact SQL

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]