Extraer contenido separado por delimitadores con Java

29/May/2010 Java , 4 Comentarios

Una de las consultas que nos han hecho en la web es acerca de como extraer contenido que se encuentre separado por delimitadores

Y es que en muchas situaciones nos podemos encontrar con este problema. Posiblemente el más típico es aquel en el que recibimos información en un fichero que ha sido exportado de alguna herramienta.

Por ejemplo, partamos de la siguiente información:

ciudad#min#max#cielo
avila#12#24#soleado
toledo#16#15#soleado
madrid#15#27#soleado
barcelona#12#20#nublado

Vemos que el contenido está separado por delimitadores. En este caso mediante una almohadilla (#).

Si queremos procesar el contenido de las cadenas deberemos de extraer la información separada por los delimitadores. Para esto podemos apoyarnos en el método StringTokenizer.

  1. StringTokenizer st = new StringTokenizer(sTexto,delimitador);

Dicho método nos deja los items encontrados en una cadena de texto cada vez que encuentre un delimitador.

Así, si partimos de la cadena

  1. String sTiempo = "avila#12#24#soleado";

Podemos instanciar el StringTokenizer de la siguiente forma:

  1. StringTokenizer st = new StringTokenizer(sTiempo,"#");

Como vemos, pasamos la almohadilla (#) como el separador que ha de utilizar el StringTokenizer.

Solo nos quedará recorrer el StringTokenizer para extraer los elementos. Esta última operación la realizamos con los métodos .hasMoreTokens() y .nextToken().

  1. while (st.hasMoreTokens())
  2. System.out.println (st.nextToken());

Vídeos sobre Java


4 comentarios en “Extraer contenido separado por delimitadores con Java”

Víctor Cuervo

lineadecodigo

@Unai,

Cierto. Con .split() podemos extraer contenido de cadenas, con el valor añadido de poder utilizar las expresiones regulares.

Muy buen aporte. Muchas gracias!!

Víctor Cuervo

Unai

A mi me gusta más usar el método split() de los Strings, que además funciona con expresiones regulares.

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*