2012-07-21 8 views
7

Java NumberFormat è 1) non thread-safe (che può essere risolto con un ThreadLocal); 2) inconvenient to use correctly per il caso d'uso più semplice quando so se la stringa dovrebbe contenere int, long, o doppia, e vogliono un'API come:Analisi dei numeri in modo sicuro e locale in modo sensibile

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); 

in cui viene generata l'eccezione quando la corda non è completamente analizzato. Ovviamente, un tale wrapper è facile da scrivere, ma non sono riuscito a trovarne uno in Guava o Apache Commons Lang. L'ho appena perso? O c'è un'altra soluzione più o meno standard per questo?

+0

Qual è il tuo problema con 'Integer.parseInt' e i fratelli? –

+0

Suppongo che non supporti diversi formati numerici? –

+0

@MarkoTopolnik Sono indipendenti dalla locale, quindi non usare il separatore decimale corretto, ecc. –

risposta

Problemi correlati