Anuncios

Bienvenidos sean a este post, hoy veremos como se puede dar un formato particular a una cadena.

Anuncios

Por ejemplo nosotros podemos tener la fecha “Viernes 6 de Diciembre de 2019” o la fecha “6/12/19” las cuales son validas pero una es mas precisa que la otra, otro ejemplo es a la hora de hablar de numeros monetarios donde cada pais no solo tiene su moneda con su simbolo tambien hay distintas formas de expresar los decimales o los miles, en fin para todo eso VBScript posee algunas funciones que nos permiten tomar un dato y darle un formato especifico a una cadena, para ello veremos la primera funcion.

Anuncios

FormatCurrency

Esta funcion se encarga de escribir en base a nuestras configuraciones locales la forma correcta de valores para monedas, su sintaxis es la siguiente:

formatcurrency(expresion[,decimales][,cero_izquierda][,parentesis_negativos][,agrupar_digitos])
Anuncios

En este caso el unico valor que no puede faltar es expresion porque va a ser el monto a formatear, el resto son opcionales:

  • decimales, indica la cantidad de digitos despues del indicador decimal
  • cero_izquierda, valor booleano para mostrar o no los ceros a la izquierda
  • parentesis_negativos, booleano para mostrar los numeros negativos en parentesis
  • agrupar_digitos, permite o no agrupar los digitos mediante el delimitador regional

Para entender mejor el concepto veamos el siguiente ejemplo:

format.vbs

dim texto

moneda = -128568.922345

moneda = formatcurrency(moneda,2,true,true)
texto = "FormatCurrency: " & vbCrLf & moneda

msgbox texto,,"Distintos formatos"
Anuncios

Este codigo es bien sencillo, creamos dos varibles, una llamada texto y otra va a ser moneda a la cual le agregamos un valor, nuestro siguiente paso sera darle el formato donde le pasamos el valor (moneda), luego la cantidad de digitos decimales, y dos valores true para el cero a la izquierda y que en caso de ser negativo lo muestre entre parentesis, luego vamos a usar a texto para indicar cual es la funcion y el resultado final, por ultimo lo mostramos en pantalla

Como pueden ver no solamente nos agrego el simbolo de la moneda, sino que puso el punto de los miles y la coma de los decimales, si fuera un sistema en ingles haria al reves, y tambien nos limito los digitos decimales a dos, pasemos a la siguiente funcion.

Anuncios

FormatNumber

Esta funcion es muy similar a la anterior y su unica diferencia es que no nos agrega el signo de la moneda pero su sintaxis es igual:

formatnumber(expresion[,decimales][,cero_izquierda][,parentesis_negativos][,agrupar_digitos]) 
Anuncios

Los parametros trabajan de forma similar a los explicados en el caso anterior, para el ejemplo vamos a tomar el codigo anterior y agregaremos este bloque antes del msgbox final:

numero = formatnumber(moneda, 3, true, false)
texto = texto & vbCrLf & "FormatNumber: " & vbCrLf & numero
Anuncios

En este caso tomamos el numero de moneda, lo convertimos a numero, en lugar de dos digitos usamos tres, que muestre los ceros a la izquierda pero esta vez que no muestre los negativos entre parentesis, al texto anterior le agregamos un nuevo texto para diferenciarlo del anterior, veamos su salida:

Como pueden ver al faltar un digito para mostrar nuestra funcion le agrego un cero para compensarlo, la funcion automaticamente agregara la cantidad de ceros que sean necesarios, pasemos a la siguiente funcion.

Nota: Esta conducta tambien la tiene FormatCurrency.
Anuncios

FormatPercent

Siguiendo con la misma saga de formateadores esta funcion se encarga de formatear los porcentajes, su sintaxis es la siguiente:

formatpercent(expresion[,decimales][,cero_izquierda][,parentesis_negativos][,agrupar_digitos])  
Anuncios

Es similar a los dos casos anteriores, donde la unica obligatoria es expresion y el resto siguen siendo opcionales, vamos a tomar el ejemplo anterior y agregar el siguiente bloque:

valor = "0,124"
valor = formatpercent(valor)
texto = texto & vbCrLf & "FormatPercent: " & vbCrLf & valor
Anuncios

En este caso vamos a usar una variable llamada valor de tipo cadena, nuestro siguiente paso sera usar la funcion sin ningun complemento, esta no solamente la convertira en numero sino que la multiplicara por 100 para convertirla en porcentaje, una vez hecho lo agregamos a texto, recuerden que este bloque siempre debe estar adelante del msgbox final, su salida es la siguiente

Observen como lo transformo y le agrego el signo de porcentaje, pasemos a la siguiente funcion.

Anuncios

FormatDateTime

Esta es una de las funciones mas importantes porque nos permite transformar una cadena en un formato de devolucion de fecha ideal para un documento o un texto, su sintaxis es la siguiente:

FormatDateTime("fecha u hora"[, formato])
Anuncios

En este caso tenemos dos argumentos, el primero que es obligatorio con la fecha u hora a formatear y el segundo es el tipo de formato que es opcional, los valores para el segundo parametro estan listados en la siguiente tabla:

ValorConstanteDescripcion
0vbGeneralDateValor predeterminado y fecha normal
1vbLongDateDevuelve la fecha completa
2vbShortDateDevuelve una fecha corta
3vbLongTimeDevuelve una hora con todos los campos
4vbShortTimeDevuelve un formato de 24 hs. (HH:mm)
Anuncios

En este caso como pueden ver tenemos los formatos mas que suficientes para dar un formato a nuestras horas o fechas mas que adecuadas, al ejemplo anterior agreguemos el siguiente bloque:

fecha = formatdatetime("06/12/19", vbLongDate)
hora = formatdatetime("12:15:40", 4)
texto = texto & vbCrLf & "FormatDateTime: " & vbCrLf & fecha
texto = texto & vbCrLf & hora
Anuncios

En este caso vamos a usar dos variables una para fecha y otra para hora, en ambos casos usaremos la funcion pero en el primer caso utilizaremos a vbLongDate para que nos devuelve la fecha mas larga en base a la que pasamos, en el segundo pasamos a vbShortTime (en realidad su valor) para que nos achique la hora, observen como se puede usar cualquiera de los dos valores, si lo probamos obtendremos la siguiente salida

Como pueden observar se ejecutaron las dos acciones correctamente, tengan en cuenta que a la hora de informar la fecha o la hora deben hacerlo con el formato que ustedes usan porque la funcion lo puede interpretar al reves y devolver un valor erroneo, veamos las siguientes tres funciones para ir finalizando.

Anuncios

string, space, trim

Estas tres funciones si bien no formatean como las anteriores sino nos permitiran dar un mejor formato a nuestras cadenas, primero veamos a string.

Anuncios

Esta funcion creara una cadena a la cual llenara con el caracter que le pasemos con la cantidad informada, su sintaxis es la siguiente:

string(longitud, caracter)

En este caso longitud es la cantidad de veces que repetiremos el caracter, y el caracter es el que estara almacenado en la cadena, este ultimo valor puede ser el valor decimal ASCII de un caracter.

Anuncios

La funcion space solo agrega los espacios que le informemos como argumento, su sintaxis es:

space(longitud)

Como solo agrega espacios lo unico que debemos especificar es cuantos debemos agregar, si lo comparamos con el anterior es similar a hacer: string(10, 32), donde 10 sera la cantidad de veces que lo repetimos y 32 representa al valor ASCII del espacio.

Anuncios

Nuestra ultima funcion es trim, la cual se encarga de limpiar los espacios en blanco del principio y del final de una cadena dejando solamente los caracteres, si hay espacios entre los caracteres no los toca, su sintaxis es:

trim(cadena)

Donde cadena va a ser el texto a modificar, tambien tiene dos funciones primas llamadas RTrim y LTrim, las cuales eliminan solamente los espacios al final y al comienzo, respectivamente, de una cadena.

Anuncios

Vamos a tomar el codigo que vinimos trabajando y vamos a agregar el siguiente bloque para poner en practica estas tres funciones:

texto = texto & vbCrLf & "String: " & vbCrLf & string(10, 65)
texto = texto & vbCrLf & "Space: " & vbCrLf & chr(64) & space(10) & chr(64)
mensaje = "    Este es un texto de prueba     "
texto = texto & vbCrLf & "Trim: " & vbCrLf & trim(mensaje)
Anuncios

En la primer linea creamos una cadena de 10 caracteres de la letra A, en la segunda linea agregamos una arroba (@), luego diez espacios y por ultimo otra arroba (@), para nuestro ultimo caso creamos una variable llamada mensaje con espacios al comienzo y al final, en la ultima linea le aplicamos un trim a esa variable, si lo probamos veremos lo siguiente

Observen como quedaron nuestras ultimas tres tareas, especialmente trim que tambien es de las mas utilizadas.

Anuncios

Unos tips finales, las funciones de formato no solamente aceptan digitos sino que tambien podemos pasar cadenas que sean numeros validos, si incluimos letras no funcionara, pero si son numericos la funcion los convierte, recuerden tener siempre bien seteado las configuraciones regionales para evitar inconvenientes, les recomiendo que del codigo vayan haciendo pequeñas modificaciones para probar otras opciones, como poner al valor original de moneda entre comillas o variar los decimales, en fin las cosas que no pude probar, la sintaxis de Rtrim y Ltrim son igual a Trim pero varia la salida por eso no especifique la sintaxis, Trim tambien es usado en los condicionales para evitar que se ingrese un valor en blanco, mas adelante mostrare un ejemplo y antes de terminar les dejo el codigo final de este post:

dim texto

moneda = -128568.922345

moneda = formatcurrency(moneda,2,true,true)
texto = "FormatCurrency: " & vbCrLf & moneda

numero = formatnumber(moneda, 3, true, false)
texto = texto & vbCrLf & "FormatNumber: " & vbCrLf & numero

valor = "0,124"
valor = formatpercent(valor)
texto = texto & vbCrLf & "FormatPercent: " & vbCrLf & valor

fecha = formatdatetime("06/12/19", vbLongDate)
hora = formatdatetime("12:15:40", 4)
texto = texto & vbCrLf & "FormatDateTime: " & vbCrLf & fecha
texto = texto & vbCrLf & hora

texto = texto & vbCrLf & "String: " & vbCrLf & string(10, 65)
texto = texto & vbCrLf & "Space: " & vbCrLf & chr(64) & space(10) & chr(64)
mensaje = "    Este es un texto de prueba     "
texto = texto & vbCrLf & "Trim: " & vbCrLf & trim(mensaje)

msgbox texto,,"Distintos formatos"
Anuncios

En resumen, hoy hemos visto como dar algunos formatos a nuestras cadenas de texto, en base a las configuraciones regionales ya sea para la moneda de la region, el formato de los numeros, el formato de los porcentajes, tambien el de las fechas y unas funciones adicionales que nos permiten trabajar con una cadena, ya sea generando una, generando espacios de forma controlada y eliminando espacios innecesarios de una cadena, 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.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00