public static String transformaValor(String valor) {
String[] split = valor.split(".");
return split[0] + "," + split[1];
}
supor que o valor seja “12.34”. O array split fica com 0 posições. Alguém sabe porque?
public static String transformaValor(String valor) {
String[] split = valor.split(".");
return split[0] + "," + split[1];
}
supor que o valor seja “12.34”. O array split fica com 0 posições. Alguém sabe porque?
Isso acontece porque o método split() da classe String recebe uma String que será interpretada como uma expressão regular, e em expressão regular, o ponto significa qualquer caracter.
No seu caso, se você passa “.” como parâmetro do método split para a String “12.34”, o split será feito usando todos os caracteres da sua String, fazendo com que ela não seja dividida.
Dá uma melhor estudada sobre expressões regulares e sua aplicação no Java que até possa encontrar uma explicação melhor da que eu te dei…
[]'s.
Se vc receber uma string que não tenha “.” teu split só vai ter a posição 0 e vai dar um erro maluco.
Seria melhor vc usar um replace da classe String ou … formatar o valor usando alguma coisa específica.
public class A{
public static void main(String [] args){
String x = "12.34";
String y = x.replace(".",",");
System.out.println(x + " -> " + y);
}
}
Olá edpittol blz…
Faz como o peczenyj disse, faz um replace do seu “.” para algum outro caracter como por exemplo, “,”, “-”, etc…
Após isso é só vc realizar o split q funcionará sem problemas.
Abraços.
Não é necessário fazer replace. Isso é gambiarra.
Simplesmente use a expressão regular que representa o ponto em si mesmo
String[] array = str.split("\.");
Po, gambiarra é usar split pra trocar , por . usando concatenação de strings e deixando de verificar o tamanho do array gerado pelo split.
Po, gambiarra é usar split pra trocar , por . usando concatenação de strings e deixando de verificar o tamanho do array gerado pelo split.[/quote]
concerteza. Mas infelizmente o titulo do topico é “Problema com split” e o problema é a falta de entendimento do que é um javadoc, do que é uma expressão regex e de que java não é VB.
O que ele faz com o array não é o problema …
Não sabia que a expressão regular do Java trata “.” como qualquer caracter e não conhecia o método replace da classe String. Para meu casa é mais útil usar o replace.
Fico grato pelas ajuda. vlw
abrass
[quote=sergiotaborda]Não é necessário fazer replace. Isso é gambiarra.
Simplesmente use a expressão regular que representa o ponto em si mesmo
String[] array = str.split("\.");
[/quote]
na verdade isso seria tentar um cast no ponto.
String[] array = str.split("\.");