Dividir una cadena en Java

1. Introducción

Dividir cuerdas es una operación muy frecuente; este tutorial rápido se centra en algunas de las API que podemos usar para hacer esto simplemente en Java.

2. String.split ()

Comencemos con la biblioteca principal, la clase String en sí misma ofrece un método split () , que es muy conveniente y suficiente para la mayoría de los escenarios. Simplemente divide la Cadena dada según el delimitador, devolviendo una matriz de cadenas .

Veamos algunos ejemplos. Comenzaremos dividiendo por una coma:

String[] splitted = "peter,james,thomas".split(",");

Dividamos por un espacio en blanco:

String[] splitted = "car jeep scooter".split(" ");

Dividamos también por un punto:

String[] splitted = "192.168.1.178".split("\\.")

Vamos a dividir ahora por varios caracteres: una coma, un espacio y un guión hasta la expresión regular:

String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));

3. StringUtils.split ()

El paquete lang común de Apache proporciona una clase StringUtils , que contiene un método split () seguro para nulos , que se divide utilizando espacios en blanco como delimitador predeterminado:

String[] splitted = StringUtils.split("car jeep scooter");

Además, ignora los espacios adicionales:

String[] splitted = StringUtils.split("car jeep scooter");

4. Splitter.split ()

Finalmente, también hay una buena API fluida de Splitter en Guava:

List resultList = Splitter.on(',') .trimResults() .omitEmptyStrings() .splitToList("car,jeep,, scooter"); 

5. Dividir y recortar

A veces, una cadena determinada contiene algunos espacios iniciales, finales o adicionales alrededor del delimitador. Veamos cómo podemos manejar dividir la entrada y recortar los resultados de una sola vez.

Digamos que tenemos esto como entrada:

String input = " car , jeep, scooter ";

Para eliminar espacios adicionales antes y / o después del delimitador, podemos realizar la división y el recorte usando expresiones regulares:

String[] splitted = input.trim().split("\\s*,\\s*");

Aquí, el método trim () elimina los espacios iniciales y finales en la cadena de entrada, y la expresión regular maneja los espacios adicionales alrededor del delimitador.

Podemos lograr el mismo resultado utilizando las funciones de Java 8 Stream :

String[] splitted = Arrays.stream(input.split(",")) .map(String::trim) .toArray(String[]::new);

6. Conclusión

String.split () es generalmente suficiente. Sin embargo, para casos más complejos, podemos utilizar la clase StringUtils basada en commons-lang de Apache , o las API de Guava limpias y flexibles.

Y, como siempre, el código del artículo está disponible en GitHub.