feed twitter facebook LinkedIn facebook

Java » Validar si un dato es numérico con Patrones en Java

marzo 31, 2009 por Víctor Cuervo 12 Comentarios Imprimir Imprimir

En el artículo Validar si un dato es numérico en Java veíamos como de una forma muy sencilla y mediante la transformación de cadenas en enteros podíamos validar si un dato es numérico en Java.

Si bien, ese ejemplo, válido para aprender a programar con Java, se nos quedaría corto para ejemplos reales.

Una buena forma, como han apuntado algunos de nuestros visitantes, es utilizar patrones sobre las cadenas de texto.

Lo primero que vamos a definir es el patrón que detecte que una cadena sea un número. Para ello indicaremos que la cadena tenga dígitos y que estos puedan aparecer N veces.

De esta manera nuestro patrón sería el siguiente:

[0-9]*

Otra forma de representar un dígito es \d. Por lo tanto nuestro patrón sería

\\d*

Hay que tener cuidado y escapar la barra invertida. Para ello la duplicamos la barra invertida.

Ahora deberemos ejecutar el patrón sobre la cadena. La gestión de patrones y expresiones regulares en Java se realiza mediante la librería java.util.regex y sus clases Matcher y Pattern. Aunque también tenemos el método .matches(), el cual se puede ejecutar sobre una String.

Esto último será lo que hagamos para ejecutar el patrón:

  1. String cadenaUno = "1234";
  2.  
  3. if (cadenaUno.matches("[0-9]*"))
  4. System.out.println("Es un número");
  5. else
  6. System.out.println("No es un número");

O con el otro patrón:

  1. String cadenaUno = "1234";
  2.  
  3. if (cadenaUno.matches("\\d*"))
  4. System.out.println("Es un número");
  5. else
  6. System.out.println("No es un número");

Podéis probar a cambiar el contenido del String para probar los diferentes comportamientos.

Java » Ordenar un Vector de forma alfabética con Java

marzo 25, 2009 por Víctor Cuervo 4 Comentarios Imprimir Imprimir

El otro día veíamos cómo ordenar un vector de string con Java. Si bien, teníamos como limitante que el método sort de Collections realizaba una ordenación atendiendo a los caracteres ASCII.

Mediante este ejemplo veremos cómo ordenar un Vector de forma alfabética con Java. Para ello nos aprovecharemos de que el método sort tiene dos formas de llamarse.

En la primera, y ya utilizada, se le pasa la lista que contiene los elementos a ordenar:

  1. public static <T extends Comparable<? super T>> void sort(List<T> list)

En la segunda, a parte de la lista de elementos, se le puede pasar una clase que sepa como ordenar dichos elementos y que por lo tanto los ordene a nuestro gusto. Atendiendo a nuestro ejemplo que los ordene de forma alfabética.

  1. public static <T> void sort(List<T> list, Comparator<? super T> c)

La clase que tiene la lógica de ordenación será una clase del tipo Comparator. Y es que Comparator es un interface a implementar por la clase que contenga la ordenación.

El interface Comparator define dos métodos. Uno de los cuales es .compare(), el cual recibe dos objetos de la lista y decide cual es mayor de los dos.

Definamos nuestra clase de comparación:

  1. class Comparador implements Comparator<String> {
  2. public int compare(String s1, String s2) {...}
  3. }

Como estamos ordenando un Vector de String, la clase que le pasamos al Template será String.

Volviendo al método .compare(), este deberá de devolver un valor negativo, cero o positivo. Atendiendo a las siguientes reglas:

  • negativo, si el primer argumento es más pequeño que el segundo.
  • cero, si los dos elementos son iguales.
  • positivo, si el primer elemento es más grande que el segundo.

Como a nosotros nos interesa realizar una ordenación alfabética que no identifique mayúsculas y minúsculas, lo primero que haremos será convertir las dos cadenas a minúsculas mediante el método .toLoweCase().

  1. s1.toLowerCase();

Y posteriormente utilizaremos el método .CompareTo de la clase String, el cual tiene el mismo comportamiento que el definido anteriormente para el método compare().

Así el código nos quedará de la siguiente forma:

  1. class Comparador implements Comparator<String> {
  2. public int compare(String s1, String s2)
  3. {
  4. return s1.toLowerCase().compareTo(s2.toLowerCase());
  5. }
  6. }

Ahora solo nos quedará llamar desde la clase que realiza la ordenación al método sort, pasándolo el Vector y la clase que hace la comparación:

  1. Vector<String> miVector = new Vector<String>();
  2. miVector.add("Victor");
  3. miVector.add("julio");
  4. miVector.add("amaya");
  5.  
  6. Collections.sort(miVector,new Comparador());

Java » Ordenar un Vector de String en Java

marzo 22, 2009 por Víctor Cuervo 18 Comentarios Imprimir Imprimir

Dentro de la librería java.util encontramos una serie de métodos que nos ayudan a ordenar las colecciones como vectores,listas,... Para ello nos apoyamos en la clase Collections.

Lo primero que tenemos que hacer para ordenar un Vector de String en Java es crear dicho Vector:

  1. Vector<String> miVector = new Vector<String>();

e insertarle datos mediante el método .add:

  1. miVector.add("Victor");
  2. miVector.add("julio");
  3. miVector.add("amaya");

Ahora utilizaremos la clase Collections y su método sort. Será este método sort el que nos permita ordenar un Vector en Java de forma sencilla.

  1. Collections.sort(miVector);

El Vector pasa como parámetro del método sort. Una vez ejecutada esta sentencia nuestro Vector estará ordenado.

Ahora solo nos queda volcar el contenido por pantalla. Para ello vamos a utilizar un bucle for-each:

  1. for(String sElemento: miVector){
  2. System.out.println(sElemento);
  3. }

Hay que tener en cuenta que la ordenación que ejecuta el método sort es en base al valor de los caracteres ASCII. Es por ello que en nuestro contenido:

Victor, julio, amaya

Nos lo devolverá ordenado como:

Victor, amaya, julio

Ya que el valor ASCII de la V mayúscula es 86 y el de la a minúscula es 97. Es por ello que ordenará a las mayúsculas primero.

En próximos artículos veremos como ordenar un Vector de String en Java de forma alfabética.

JavaScript, Linea de Codigo » Desambiguación sobre la función Replace de JavaScript

marzo 12, 2009 por Víctor Cuervo 3 Comentarios Imprimir Imprimir

Hará mucho tiempo escribí un artículo sobre cómo implementar la función replace de JavaScript mediante otras funciones del lenguaje.

El artículo podía llevar a engaño debido a su nombre "Función Replace en JavaScript" y una errata, la cual indicaba que no existía la función replace en JavaScript. Algo erroneo.

Es por ello que he decidido recolocar los artículos quedando los siguientes:

Espero que la aclaración no dé lugar a dudas y disculpar las molestias ocasionadas a nuestros lectores.

JavaScript » Implementarnos la función replace de JavaScript

marzo 12, 2009 por Víctor Cuervo 6 Comentarios Imprimir Imprimir

Dentro del lenguaje JavaScript existe la función replace para realizar la sustitución de cadenas de textos. Podemos ver un ejemplo en "Función Replace en JavaScript".

En este ejemplo vamos a ver como implementarnos la función replace a partir de otras funciones existentes en el lenguaje JavaScript.

Lo primero que haremos será definirnos el interface de la función

  1. function replace(texto,s1,s2);

En esta función reemplazaríamos sobre el texto las cadenas s1 que encontrásemos por las cadenas s2.

Existen diferentes formas de hacer dicha sustitución. Todas ellas nos las tenemos que codificar. En este caso vamos a utilizar dos funciones: .split() y .join().

La primera lo que hace es, a partir de una cadena, crear un array de cadenas. La división la hace a partir del parámetro recibido.

Así, si tenemos el siguiente código:

  1. texto = "Son tres mil trescientos treinta y tres con nueve";
  2. resulado = texto.split("tres");

Lo que obtendremos será un array de la siguiente forma

  1. ['Son ',' mil ','cientos treinta y ','con nueve']

Vemos que son 4 cadenas:

  • 'Son '
  • ' mil '
  • 'cientos treinta y '
  • 'con nueve'

Seguidamente utilizamos el método .join. Este método lo que hace es unir un array de cadenas y entre cada cadena mete el texto que se recibe como parámetro. Así conseguimos hacer la sustitución del texto.

texto =['Son ',' mil ','cientos treinta y ','con nueve']
resultado = texto.join("dos");

El resultado será:

  1. "Son dos mil doscientos treinta y dos con nueve";

La función replace quedará de la siguiente forma:

function replace(texto,s1,s2){
	return texto.split(s1).join(s2);
}

ASP » Mandar emails con ASPEmail

marzo 11, 2009 por Víctor Cuervo Sin Comentarios Imprimir Imprimir

Quien no quiere tener en su página un apartado que nos permita enviar noticias, textos,... mediante un email. El envío de email desde la páginas es muy sencillo utilizando el componente activo de servidor ASPEMail desarrollado por la empresa Persits Software, Inc.

Para mandar emails con ASPEmail lo primero que debemos de hacer es crear una instancia del objeto ASPEMail. Para ello utilizaremos el método CreateObject, al cual pasaremos el ID del objeto AspEMail.

  1. Set Mail = Server.CreateObject("Persits.MailSender")

Una vez creado el objeto nos aprovecharemos de los métodos que tiene para enviar el mensaje. Lo primero es indicar el servidor SMTP que utilizaremos para enviar el mensaje.

  1. Mail.host = "smtp.miservidor.com"

Después indicaremos la persona la cual recibirá el mensaje. Esto lo realizaremos a través del método AddAddress, el cual recibe como parámetros la dirección de email y el nombre de la persona de destino. Estos valores los vamos a recoger de un formulario, es por ello que utilizaremos el método Request.Form("to"), el cual recupera el valor del campo "to" del formulario. Posteriormente indicaremos quien es la persona que envia el mensaje, propiedad From.

  1. Mail.AddAddress Request.Form("to")
  2. Mail.From "usuarior@lineadecodigo.com", "Linea de Código"

Para terminar de rellenar el encabezado deberemos de indicar el motivo del mensaje a través de la propiedad Subject.

  1. Mail.Subject = "Mensaje de prueba de Linea de Código"

Lo único que nos quedará es rellenar el cuerpo del mensaje, para ello utilizaremos la propiedad Body.

  1. Mail.Body = "Esto es una prueba del componente AspEMail 4.5"

Una vez conformado todo el mensaje lo enviamos a través del método Send. Después de enviado podemos comprobar si ha ocurrido algún error a través del objeto Error.

  1. If Err <> 0 Then
  2. Response.Write(Err.Description)
  3. else
  4. Response.Write("Mensaje enviado satisfactoriamente")
  5. End If

ASP » Recuperar datos de un formulario con ASP

marzo 8, 2009 por Víctor Cuervo 2 Comentarios Imprimir Imprimir

Vamos a construir un ejemplo mediante el cual podamos recuperar datos de un formulario con ASP. Posteriormente mostraremos los datos en una la pantalla.

Para ello vamos a crear un formulario que contenga dos campos del tipo input. Uno de los campos será de tipo texto, mientras que el otro campo será del tipo password.

Es muy importante el que demos un nombre a cada uno de los campos mediante el atributo name.

  1.  
  2. <input type="text" name="texto" size="30">
  3. <input type="password" name="contraseña" size="10">
  4.  

El atributo action del formulario deberá de contener el nombre del la página ASP que va a recoger la información del formulario.

  1.  
  2. <form action="recuperar-datos-formulario.asp" method="post">
  3. <label for="nombre">Nombre: </label>
  4. <input type="text" id="nombre" name="texto" size="30"><br>
  5. <label for="password">Contraseña: </label>
  6. <input type="password" id="password" name="password" size="10"><br>
  7. <input type="submit" value="Enviar"/>
  8. </form>
  9.  

Con lo que respecta al método de envío del formulario, atributo method, puede ser "POST" o "GET". Podemos usar cualquiera de los dos, si bien, dependiendo del método elegido deberemos de recuperar la información del formulario de una forma u otra.

Así, si el método utilizado es POST deberemos de recuperar la información mediante Request.Form("nombreCampo"), donde el "nombreCampo" es el valor que le hayamos asignado al campo name de los input del formulario.

  1.  
  2. <%
  3. texto = Request.Form("texto")
  4. paswd = Request.Form("password")
  5. %>
  6.  

En el caso de que el método utilizado sea GET deberemos de recuperar la información mediante Request.QueryString("nombreCampo")

La información que hemos recuperado la podemos almacenar en variables, las cuales podemos mostrar por pantalla posteriormente mediante el método Response.Write(variable).

  1.  
  2. <%
  3. Response.Write("El valor del texto es " & texto & "<br>")
  4. Response.Write("El valor del password es " & passwd & "<br>")
  5. %>
  6.  

Linea de Codigo » Foros en lineadecodigo.com

A partir de hoy podéis exponer todas vuestras dudas en nuestros foros de programación.

http://foros.lineadecodigo.com ó http://www.dudasprogramacion.com

Java » Número mayor y su posición

marzo 3, 2009 por Víctor Cuervo 9 Comentarios Imprimir Imprimir

Este es un problema básico a la hora de trabajar con arrays en Java. La idea es buscar el número más grande del array y la posición que ocupa.

Lo primero es declarar el array de números e inicializarlo con una secuencia cualquiera:

  1. int[] listaNumeros = {1,4,7,8,9,2,7,15,4,6,9,8};

Lo siguiente, declarar dos variables, en las que almacenaremos el número mayor y su posición.

Para empezar asumiremos que el número mayor es el primero y que consecuentemente su posición es la cero (recuerda que los arrays empiezan por la posición 0).

  1. int iNumeroMayor, iPosicion;
  2.  
  3. //Presuponemos que el numero mayor es el primero
  4. iNumeroMayor = listaNumeros[0];
  5. iPosicion = 0;

Ahora, recorreremos todo el array. Para ello nos valemos de una estructura repetitiva tipo for y de la propiedad .length del array, la cual nos da el número de elementos que almacena el array.

  1. for (int x=1;x<listaNumeros.length;x++){...}

Por cada elemento del array que recorramos deberemos de preguntar si dicho elemento es mayor que el que tenemos almacenado. Si esto se cumple pondremos este como nuevo número mayor y la variable de iteración del bucle como posición.

  1. if (listaNumeros[x]>iNumeroMayor){
  2. iNumeroMayor = listaNumeros[x];
  3. iPosicion = x;
  4. }

Solo nos quedará mostrar los valores de iNumeroMayor e iPosicion. Simple, sencillo y en pocas líneas.

SVG » Dibujar un rectángulo con SVG

marzo 2, 2009 por Víctor Cuervo 2 Comentarios Imprimir Imprimir

Dibujar un rectángulo con SVG es una cosa bastante fácil ya que el rectangulo es una de las figuras estándar del lenguaje SVG. Para ello necesitaremos utilizar la etiqueta RECT

Los dos primeros atributos importantes para nuestro ejemplo son la altura y ancho del rectangulo. Para ello utilizaremos los atributos de la etiqueta RECT: width y height.

  1. <rect width="200" height="100" fill="red"/>

Otra cosa que podemos hacer es la de posicionar el rectangulo dentro del lienzo. Para ello tendremos que definir las coordenadas X,Y del lienzo. El nombre de los atributos es el mismo: X e Y.

  1. <rect x="50" y="50" width="200" height="100""/>

Por último vamos a darle color a la cosa. En este caso, utilizaremos el atributo fill, indicándole el color que queremos usar (rojo en este caso):

  1. <rect fill="red">

Aunque podríamos darle el color mediante un estilo y el atributo style:

  1. <rect style="fill:red;"/>

El código que nos quedaría al final sería algo parecido a lo siguiente:

  1. <rect x="50" y="50" width="200" height="100" fill="red"/>