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?
¿Cuál es su problema con 'Integer.parseInt' y hermanos? –
Supongo que no es compatible con diferentes formatos de número? –
@MarkoTopolnik Son independientes de la configuración regional, por lo tanto, no use el separador decimal correcto, etc. –