2012-07-21 11 views
7

Javas NumberFormat ist 1) nicht thread-safe (die mit einem ThreadLocal umgehen kann); 2) inconvenient to use correctly für den einfachsten Anwendungsfall, wenn ich weiß, ob die Zeichenfolge sollte int, long oder Doppel enthalten, und wollen eine API wie:Parsing Zahlen sicher und locale-empfindlich

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

, wo die Ausnahme ausgelöst wird, wenn die Zeichenfolge nicht vollständig analysiert. Offensichtlich ist ein solcher Wrapper einfach zu schreiben, aber ich konnte keinen in Guava oder Apache Commons Lang finden. Habe ich es gerade vermisst? Oder gibt es eine andere mehr oder weniger Standardlösung dafür?

+0

Was ist Ihr Problem mit "Integer.parseInt" und Brüdern? –

+0

Ich denke, es unterstützt keine unterschiedlichen Zahlenformate? –

+0

@MarkoTopolnik Sie sind Gebietsschema-unabhängig, also verwenden Sie nicht das korrekte Dezimaltrennzeichen, etc. –

Antwort