Java. StringTokenizer y Split

Dividir una String para obtener los diferentes elementos.

Separar una String por elementos

En este tutorial se verán dos formas de dividir una cadena de texto para extraer el contenido que nos interese.

Supongamos que tenemos una cadena de texto con elementos separados por espacios, por ejemplo:

String cadena = "elemento1 elemento2 elemento3";

StringTokenizer

Una de las formas para hacerlo en Java es utilizar la clase StringTokenizer, la cual dividirá la cadena en Tokens (por defecto dividirá la cadena por espacios).

String linea = "elemento1 elemento2 elemento3";
StringTokenizer tokens = new StringTokenizer(linea);
while(tokens.hasMoreTokens()){
  System.out.println(tokens.nextToken());
}

Si se desea dividir la cadena por otro elemento distinto del espacio se puede llamar al constructor StringTokenizer con un parámetro más. Por ejemplo, si la cadena tuviera los elementos separados por el caracter #, modificaríamos esta línea de código del ejemplo anterior:

StringTokenizer tokens = new StringTokenizer(linea,"#");

*NOTA: Recordamos que para utilizar esta clase es necesario importar el paquete JAVA que la contiene en las primeras líneas del programa:_

import java.util.StringTokenizer;

Split

Otra posibilidad es utilizar la función Split de la clase String. Con esta función se pueden utilizar expresiones regulares. En este ejemplo separamos los elementos con espacio (expresión regular \s) y el más para indicar que puede haber más caracteres a continuación.

int j = 0;
String linea = "elemento1 elemento2 elemento3";
String [] campos = linea.split("\\s+");
while( j <campos.length){
  System.out.println(campos[j]);
  j++;
}

La función split pone cada elemento encontrado en una posición del vector de Strings, para mostrar los elementos sólo hace falta recorrerlo.

Ejemplo más complejo con StringTokenizer

Veamos este ejemplo para obtener elementos dentro de otros elementos con StringTokenizer. Supongamos que tenemos una cadena del tipo:

String cadena = "[[a,b],[c,d],[e,f]]";

Podemos extraer los elementos de la siguiente forma:

int i;
String line,word,subword;
StringTokenizer elementos,subelementos;
line ="[[a,b],[c,d],[e,f]]";
elementos = new StringTokenizer(line,"[]");
while(elementos.hasMoreTokens()){
  word = elementos.nextToken();
  i=1;
  subelementos = new StringTokenizer(word,",");
  while(subelementos.hasMoreTokens()){
    subword = subelementos.nextToken();
    System.out.println(i+". "+subword);
    i++;
  }
}