Dividir uma String em Java

Dividir uma String em Java

1. Introdução

DividirStrings é uma operação muito frequente; este tutorial rápido concentra-se em algumas das APIs que podemos usar para fazer isso simplesmente em Java.

2. String.split()

Vamos começar com a biblioteca central - a própria classeString oferece um métodosplit() - que é muito conveniente e suficiente para a maioria dos cenários. Ele simplesmente divide oString fornecido com base no delimitador, retornando uma matriz deStrings.

Vejamos alguns exemplos. Começaremos dividindo por vírgula:

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

Vamos dividir por um espaço em branco:

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

Vamos também dividir por um ponto:

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

Agora vamos dividir por vários caracteres - uma vírgula, espaço e hífen por meio de regex:

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

3. StringUtils.split()

O pacote de linguagem comum do Apache fornece uma classeStringUtils - que contém um métodosplit() seguro para nulos, que se divide usando um espaço em branco como delimitador padrão:

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

Além disso, ignora espaços extras:

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

4. Splitter.split()

Finalmente, há também uma ótimaSplitter API fluente no Guava:

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

5. Dividir e cortar

Às vezes, um determinadoString contém alguns espaços à esquerda, à direita ou extras ao redor do delimitador. Vamos ver como podemos lidar com a divisão da entrada e o corte dos resultados de uma vez.

Digamos que temos isso como uma entrada:

String input = " car , jeep, scooter ";

Para remover espaços extras antes e / ou depois do delimitador, podemos executar a divisão e o recorte usando o regex:

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

Aqui, o métodotrim() remove os espaços à esquerda e à direita na string de entrada e a própria regex trata os espaços extras ao redor do delimitador.

Podemos obter o mesmo resultado usando os recursos do Java 8Stream:

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

6. Conclusão

String.split() geralmente é suficiente. No entanto, para casos mais complexos, podemos utilizar a classeStringUtils baseada em linguagem comum do Apache ou as APIs Guava limpas e flexíveis.

E, como sempre, o código do artigo está disponívelover on GitHub.