Verificar se uma String é numérica

Olá:



Acho que essa é uma dúvida aparentemente boba: Nunca encontrei um método na API do Java para verificar se uma determinada String é numérica ou não, seja inteira ou ponto flutuante.

Um modo - meio nojento, na minha opinião - seria fazer algo assim:

Code:


public boolean isInt(String str) {

boolean isInteger = true;

try {

int i = Integer.parseInt(str);

} catch(NumberFormatException nfe) {

isInteger = false;

}

return isInteger;

}




Outra forma - que não faz uso de exceções - seria assim:

Code:


public boolean isInt(String str) {

boolean isInteger = true;

int size = str.length();

for(int i = 0; (i < size) && isInteger; i ++) {

// Para caracter individual, Java tem um método para avaliar

isInteger = Character.isDigit(str.charAt(i));

}

return isInteger;

}




No que se refere à números de ponto flutuante (float e double), ainda devemos levar em consideração o ponto decimal, que varia de locale para locale ("," aqui no Brasil, "." nos EUA, por exemplo).

Enfim, será que so há essas alternativas acima, que devemos construir "manualmente"? Alguém tem alguma idéia?



Grato,

Expressões regulares é uma solução.



Um ponto de partida é o seguinte:



http://www.cacas.org/java/gnu/regexp/