Una muy buena observación que nos hicieron en el artículo Extraer contenido separado por delimitadores con Java es que el uso de StringTokenizer limita la extracción de contenido. Sobre todo si los delimitadores son dinámicos, ya que StringTokenizer no permite el uso de expresiones regulares.
Imaginemos que el texto que nos envían para extraer los items tiene la siguiente estructura:
String sCiudades = "#01avila#02madrid#03toledo#04santander";
Podemos comprobar que los delimitadores son dinámicos y que siguen la pauta de una almohadilla y un par de dígitos de separación, los cuales van incrementando.
Lo primero es encontrar una expresión regular para este delimitador dinámico. Podría ser:
#0[0-9]
Ahora, nos vamos a apoyar en el método .split() para dividir la cadena con la expresión regular y quedarnos con los items de resultado.
String[] items = sCiudades.split("#0[0-9]");
Vemos que el método .split() nos devuelve un array de String. Así que solo nos quedará el recorrer el array para mostrar el contenido. Para ello utilizamos una estructura for-each
for (String item: items)
System.out.println(item);
Quisiéramos agradecer a personas como Unai estos aportes tan gratificantes de contenido que ayudan a que todos podamos aprender un poco más.