Como Dividir uma string em Java
 
Este tutorial discute como dividir uma string em Java.
String em Java é um dos tipos de dados não-primitivos e é utilizado para armazenar uma seqüência de caracteres. Podemos declarar uma variável de string simplesmente da seguinte forma:
String string = "I am a string";
String string1 = "I am another string";
Podemos precisar executar várias tarefas de processamento de string, dependendo do que estamos tentando alcançar. Vamos considerar o caso em que temos uma string que representa dados em formato CSV - todos separados por uma vírgula.
String data = "Apple,Banana,Orange,Peach";
Queremos todas as strings individuais a partir disto; portanto, precisamos dividir a string com base na vírgula para separar os dados para obter a seguinte saída.
> Apple
> Banana
> Orange
> Peach
Java Strings têm uma função de divisão por padrão String#split() que toma uma expressão regular como entrada e retorna uma série de strings resultantes após a divisão na inteiro dada.
O exemplo abaixo ilustra como utilizar este método para dividir uma determinada string em Java.
public class Main {
  public static void main(String args[]) {
    String data = "Apple,Banana,Orange,Peach";
    String[] splitted = data.split(",");
    for (int i = 0; i < splitted.length; i++) {
      System.out.println(splitted[i]);
    }
  }
}
O código acima mostra o seguinte.
Apple
Banana
Orange
Peach
Vamos tentar este método para dividir uma string em um parâmetro diferente.
Dividir em um ponto
Desta vez, temos um string como este: "One.Two.Three.Four". Vamos utilizar novamente o mesmo método para dividi-lo.
public class Main {
  public static void main(String args[]) {
    String data = "One.Two.Three.Four";
    String[] splitted = data.split(".");
    for (int i = 0; i < splitted.length; i++) {
      System.out.println(splitted[i]);
    }
  }
}
O código acima não vai dar em nada! Lembre-se, mencionamos que a função split toma um padrão de expressão regular como entrada. Portanto, precisamos tomar medidas extras quando quisermos dividir em alguns caracteres especiais.
Ali são 12 caracteres com significados especiais:
- a contrabarra \
- o carpete ^
- o sinal de dólar $
- o período ou ponto .
- a barra vertical ou o símbolo do tubo |
- o ponto de interrogação ?
- o asterisco ou estrela *
- o sinal de mais +
- o parêntese de abertura (
- o parêntese de fechamento )
- e o colchete de abertura [
- a bracelete de abertura encaracolada {
Estes caracteres especiais são freqüentemente chamados de metacharacters.
Se quisermos dividir nossa string em qualquer um dos caracteres acima, podemos utilizar barra invertida \ para escapar desses caracteres especiais, então utilize data.split('\\.') em vez de data.split('.').
public class Main {
  public static void main(String args[]) {
    String data = "One.Two.Three.Four";
    String[] splitted = data.split("\\.");
    for (int i = 0; i < splitted.length; i++) {
      System.out.println(splitted[i]);
    }
  }
}
O código acima agora sai corretamente:
One
Two
Three
Four
Vamos tentar mais um exemplo.
Dividir em uma string
Desta vez, temos um string como este: "OneFruitTwoFruitThreeFruit". Vamos utilizar novamente o mesmo método para dividi-lo com base na string Fruit.
public class Main {
  public static void main(String args[]) {
    String data = "OneFruitTwoFruitThreeFruit";
    String[] splitted = data.split("Fruit");
    for (int i = 0; i < splitted.length; i++) {
      System.out.println(splitted[i]);
    }
  }
}
O código acima sai:
One
Two
Three
Agora sabemos como dividir uma string em Java em qualquer parâmetro dado.