segunda-feira, 4 de outubro de 2021

Erro Java 7 usando método split() com String vazia como delimitador

        O método split() do Java recebe como parâmetro uma String ou Regex para dividir a String em um Array de acordo com o delimitador passado. Porém, com o Java 7 (e talvez versões anteriores), quando passado uma String vazia como parâmetro ("") é criado uma posição vazia no início do Array. Nas versões 8 em diante esse problema foi corrigido. A questão é que dependendo do tratamento dado na hora do desenvolvimento, futuramente ao migrar o projeto para uma versão mais atual do Java, vai ter problema.

        

         Basicamente temos duas soluções:

 

  1. Não usar o Split() passando uma String vazia como delimitador, ao invés disso usar uma regex ou fazer um loop pegando as posições do Array.  
  2. Usar um código para atualizar o Array tirando o espaço em branco.

 

         Segue um exemplo de um código que tira o espaço extra no Java 7:

 

//Pega a String e passa para um Array.

String minhaString = "Daniel";

String[] meuArray = minhaString.substring(0,5).split("");

       

/*

* Hack para Java 7 pq inclui uma posição vazia no inicio do array após o split na String.

* A partir da versão 8 do Java o problema não existe mais.

*/

if(meuArray[0].equals("")){

     String[] hack = new String[meuArray.length-1];

     System.arraycopy(meuArray, 1, hack, 0, hack.length);

     meuArray = hack;

}

/*Fim do hack*/

 

         Eu prefiro usar a opção 1, mas há casos em que a opção 2 pode ajudar, vai depender de cada situação.

Nenhum comentário:

Postar um comentário