Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida com Split

A minha dúvida é: Se eu dou um split em "alura teste" pela letra 'a'. Por que ele cria 3 posições em vez de duas? E qual o motivo de vir um espaço em branco na posição zero? Grato.

String nome = "alura teste";
String[] dividido = nome.split("a");

for (int i = 0; i < dividido.length; i++) {
            System.out.println(dividido[i].trim());            
        }

System.out.println(dividido.length);
3 respostas
solução!

Boa noite, Alex Sandro! Como vai?

Ele cria um array de 3 posições justamente por causa desse espaço em branco! Como a palavra "alura" começa com a letra "a", então na posição 0 do vetor vai estar tudo que vem antes dessa primeira ocorrência da letra "a". Como não tem nada antes, o Java coloca esse espaço em branco.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!

Hmm, então isso seria um erro do java? Eu não entendi muito bem a necessidade de criar uma posição que não contém nada. E no caso, existe alguma forma de falar pro java ignorar esse tipo de situação?

Não é um erro, Alex. É apenas a forma que foi definida como comportamento para o método split(). Inclusive, esse espaço em branco no início tem uma utilidade! Quando ele aparece, nós sabemos de cara que o separador utilizado no split() foi encontrado logo no início da String em questão, o que pode ser útil dependendo da situação que vc esteja trabalhando.

O Java não dá nada pronto para desconsiderar esse espaço em branco inicial, mas é só fazer um simples if e verificar se a posição 0 do vetor resultante tem o valor em branco, como no exemplo a seguir:

String[] meuVetor = minhaString.split("a");
int posicaoInicial = 0;
if (meuVetor[0].equals("")) {

     posicaoInicial++;
}
for (int i = posicaoInicial; i < meuVetor.length; i++) {
     // manipulo o vetor da forma que eu quiser...
}

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos!