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.