2012-07-21 4 views
7

Java NumberFormat es 1) no es seguro para subprocesos (que se puede solucionar con ThreadLocal); 2) inconvenient to use correctly para el caso de uso más sencillo cuando sé si la cadena debe contener int, long o doble, y quieren una API como:Analizando los números de manera segura y sensible a la configuración local

int parseInt(String str, Locale locale) throws ParseException; 
int parseInt(String str, int defaultValue, Locale locale); 
long parseLong(String str, Locale locale) throws ParseException; 
long parseLong(String str, long defaultValue, Locale locale); 
double parseDouble(String str, Locale locale) throws ParseException; 
double parseDouble(String str, double defaultValue, Locale locale); 

donde la excepción se produce cuando la cadena no está completamente analizada. Obviamente, ese envoltorio es fácil de escribir, pero no pude encontrar uno en Guava o Apache Commons Lang. ¿Acabo de extrañarlo? ¿O hay otra solución más o menos estándar para esto?

+0

¿Cuál es su problema con 'Integer.parseInt' y hermanos? –

+0

Supongo que no es compatible con diferentes formatos de número? –

+0

@MarkoTopolnik Son independientes de la configuración regional, por lo tanto, no use el separador decimal correcto, etc. –

Respuesta

Cuestiones relacionadas