Bienvenidos sean a este post, hoy veremos un metodo del tipo string.
Este metodo nos permite formatear un texto de varias formas, si tenemos que hacer una comparacion seria como trabajar con printf de C, este tiene varias formas de usarse para ello veamos como es su sintaxis mas basica:
string.Formt(literal, variables);
En literal pasaremos una cadena de texto la cual sera la que mostraremos y en ella pondremos los elementos a formatear, en las variables pondremos todas las variables, valores o arrays que deseamos mostrar en el literal, suena complicado pero un ejemplo simple seria como el siguiente:
string.Format("El valor es de {0}", valor);
Observen que en el literal pasarmos un dato entre dos llaves y por fuera de las comillas una variable con un valor, en este caso mostraremos el valor de la variable entre las dos llaves, si se preguntan por ese numero es la representacion de la posicion en la lista de las variables, es decir la primera posicion siempre sera 0, la segunda 1, la tercera 2 y asi sucesivamente, si tenemos mas de una variable y queremos representar alguna de ellas simplemente cambiamos el numero por el de la variable y listo, parece dificil pero no lo es tanto, antes de pasar a un ejemplo veamos como podemos formatear a las llaves:
{posicion, alineacion: tipo_dato}
La posicion es el orden de la lista de variables, la alineacion nos permitira como establecer la forma de mostrar los datos, por ultimo el tipo de dato que usaremos para convertirlo, para entenderlo un poco mejor vamos a crear un ejemplo, para ello haremos un nuevo archivo con el nombre de formato.cs y le agregaremos el siguiente codigo:
formato.cs
using System;
public class Program
{
static int Main()
{
double valor = 23.3;
string fmt;
fmt=string.Format("El valor actual es {0}", valor);
Console.WriteLine(fmt);
return 0;
}
}
En este codigo primero definiremos una variable con un valor y luego solo declaramos una variable de tipo string para almacenar el resultado de formatear la cadena, nuestro siguiente paso sera ejecutar el metodo y almacenado en la variable anterior, observen que tenemos un literal con una llave simple y le pasamos el valor de la variable, por ultimo mostraremos el resultado de almacenado en fmt, compilemos y veamos como es su salida:
C:\Users\tinchicus>formato.exe
El valor actual es 23,3
C:\Users\tinchicus>
Ahora volvamos a nuestra codigo y agreguemos el siguiente bloque despues del anterior pero antes del return:
fmt=string.Format("El valor actual es {0:C}", valor);
Console.WriteLine(fmt);
En este caso es igual al bloque anterior pero agregamos el tipo Currency para darle un formato de tipo monetario al valor que mostramos anteriormente, compilemos nuevamente y veamos como es su salida:
C:\Users\tinchicus>formato.exe
El valor actual es 23,3
El valor actual es $ 23,30
C:\Users\tinchicus>
Ahora agreguemos el siguiente bloque despues del anterior:
DateTime ahora = DateTime.Now;
fmt=string.Format("Ahora es {0:d} a las {0:t}", ahora);
Console.WriteLine(fmt);
En este bloque definiremos una nueva variable donde almacenaremos la hora y fecha actual, despues por medio de Format estableceremos un literal donde pasaremos primero la parte de la fecha y luego de la hora de los valores almacenados en la variable anterior, por ultimo mostraremos el valor formateado, compilemos y veamos como es la nueva salida:
C:\Users\tinchicus>formato.exe
El valor actual es 23,3
El valor actual es $ 23,30
Ahora es 18/01/2023 a las 12:37 p.m.
C:\Users\tinchicus>
Nota: La fecha va a ser distinta a cuando ejecuten el codigo.
Con esto pudimos ver como podemos tomar un dato y convertirlo a los formatos que necesitemos, asi como hicimos para convertirlo en tipo monetario, ahora procedamos a agregar el ultimo bloque:
int[] anyos = { 2020, 2021, 2022 };
int[] habitantes = { 22187, 23540, 25110 };
fmt = string.Format("{0, -10} {1, -10}\n\n",
"Año", "Habitantes");
for(int i = 0; i < anyos.Length; i++)
{
fmt+=string.Format("{0, -10} {1,-10:N0}\n",
anyos[i], habitantes[i]);
}
Console.Write(fmt);
Primero definiremos dos array de tipo int donde almacenaremos los años y los habitantes de un pueblo X, despues nuevamente almacenaremos en fmt el resultado de Format, en este caso establecemos una alineacion para dos valores, en este caso pasamos literales para indicar la columna de los años y otro para los habitantes, despues tenemos un bucle for donde pasaremos por todos los elementos del array anyos, recuerden que Length es una propiedad que nos devuelve el tamaño de nu array en este caso, dentro del bloque agregaremos mas del resultado de formatear a fmt, en este caso seran cada una de las posiciones tanto del array anyos como habitantes, para ello usaremos al contador de bucle para cada posicion, si tienen curiosidad el N0 es simplemente para mostrar los puntos de miles y la coma decimal de un valor, y observen por ultimo que utilizamos la misma alineacion que la anterior, para finalmente mostrar el valor almacenado en fmt, compilemos y veamos como es su nueva salida:
C:\Users\tinchicus>formato.exe
El valor actual es 23,3
El valor actual es $ 23,30
Ahora es 18/01/2023 a las 12:45 p.m.
Año Habitantes
2020 22.187
2021 23.540
2022 25.110
C:\Users\tinchicus>
Esta es una forma muy basica de como ordenar y formatear una cadena, como pueden ver tenemos muchisitmas formas de trabajar con este metodo, para mas informacion les recomiendo vistiar la siguiente direccion donde esta mas explayado todo este tema pero eso si, esta en ingles:
https://learn.microsoft.com/en-us/dotnet/api/system.string.format?view=net-7.0
Por ultimo les dejo como quedo nuestro codigo despues de todas las modificaciones:
formato.cs
using System;
public class Program
{
static int Main()
{
double valor = 23.3;
string fmt;
fmt=string.Format("El valor actual es {0}", valor);
Console.WriteLine(fmt);
fmt=string.Format("El valor actual es {0:C}", valor);
Console.WriteLine(fmt);
DateTime ahora = DateTime.Now;
fmt=string.Format("Ahora es {0:d} a las {0:t}", ahora);
Console.WriteLine(fmt);
int[] anyos = { 2020, 2021, 2022 };
int[] habitantes = { 22187, 23540, 25110 };
fmt = string.Format("{0, -10} {1, -10}\n\n",
"Año", "Habitantes");
for(int i = 0; i < anyos.Length; i++)
{
fmt+=string.Format("{0, -10} {1,-10:N0}\n",
anyos[i], habitantes[i]);
}
Console.Write(fmt);
return 0;
}
}
En resumen, hoy hemos visto a Format, que es, para que sirve, como es su sintaxis, vimos un ejemplo de como podemos usarlo en varias formas, asi como varias conversiones, aunque si bien lo vimos de forma muy basica esto nos permitira ver como trabajar con este metodo, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
