Existe-t-il un moyen natif (de préférence sans implémenter votre propre méthode) de vérifier qu'une chaîne est analysable avec Double.parseDouble()
?
Réponses
Trop de publicités?L'approche habituelle serait de le vérifier avec une expression régulière, comme cela est également suggéré dans la documentation Double .
L'expression rationnelle fournie devrait couvrir tous les cas valides en virgule flottante, de sorte que vous n'avez pas besoin de le tripoter car vous risquez de manquer certains points plus fins.
Si vous ne voulez pas faire cela, try catch
est toujours une option.
Toutes les réponses sont OK, selon votre niveau académique. Si vous souhaitez suivre les spécifications Java avec précision, utilisez les éléments suivants:
private static final Pattern DOUBLE_PATTERN = Pattern.compile(
"[\\x00-\\x20]*[+-]?(NaN|Infinity|((((\\p{Digit}+)(\\.)?((\\p{Digit}+)?)" +
"([eE][+-]?(\\p{Digit}+))?)|(\\.((\\p{Digit}+))([eE][+-]?(\\p{Digit}+))?)|" +
"(((0[xX](\\p{XDigit}+)(\\.)?)|(0[xX](\\p{XDigit}+)?(\\.)(\\p{XDigit}+)))" +
"[pP][+-]?(\\p{Digit}+)))[fFdD]?))[\\x00-\\x20]*");
public static boolean isFloat(String s)
{
return DOUBLE_PATTERN.matcher(s).matches();
}
Ce code est basé sur JavaDocs chez Double .