Continuamos validando…. números

Siguiendo con las validaciones, a veces he tenido que validar si la cadena era un número. En algunos casos he visto diferentes aproximaciones mediante

– Funciones recursivas

public static boolean isNumeric(String string) {
 if (string == null || string.isEmpty()) {
 return false;
 }
 int i = 0;
 int stringLength = string.length();
 if (string.charAt(0) == '-') {
 if (stringLength > 1) {
 i++;
 } else {
 return false;
 }
 }
 if (!Character.isDigit(string.charAt(i))
 || !Character.isDigit(string.charAt(stringLength - 1))) {
 return false;
 }
 i++;
 stringLength--;
 if (i >= stringLength) {
 return true;
 }
 for (; i < stringLength; i++) {
 if (!Character.isDigit(string.charAt(i))
 && string.charAt(i) != '.') {
 return false;
 }
 }
 return true;
}

– Expresiones regulares

s.matches("[-+]?\\d*\\.?\\d+")

– Parser de la clase correspondiente

public static boolean isNumeric(String str)  
{  
  try  
  {  
    double d = Double.parseDouble(str);  
  }  
  catch(NumberFormatException nfe)  
  {  
    return false;  
  }  
  return true;  
}

Para mi gusto, la forma más fácil y elegante es usando las librerías Commons de Apache ¿Por qué? En casi todos los proyectos web que he podido ver, estas librerías se encontraban ya incluidas por lo que era más fácil hacer uso de ellas que reinventar la rueda, pero recordando siempre mirar la implementación por si satisfacía todas los requisitos.

En este caso usamos la librería Apache Commons Lang y su la clase NumberUtils. Recordad que debéis usar ésta que enlazo y no la que se encuentra jerárquicamente en un nivel superior ya que está marcada como deprecated.

NumberUtils.isDigits(str:String):boolean
NumberUtils.isNumber(str:String):boolean

Enlaces de interes en Stack Overflow: 1 y 2

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s