Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing numbers safely and locale-sensitively

Java's NumberFormat is 1) non thread-safe (which can be worked around with a ThreadLocal); 2) inconvenient to use correctly for the simplest use case when I know whether the string should contain int, long, or double, and want an API like:

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

where the exception is thrown when the string isn't completely parsed. Obviously, such a wrapper is easy to write, but I couldn't find one in Guava or Apache Commons Lang. Did I just miss it? Or is there another more-or-less standard solution for this?

like image 600
Alexey Romanov Avatar asked Jul 21 '12 11:07

Alexey Romanov


1 Answers

One option I've found is Apache Commons Validator (still non-thread-safe).

like image 178
Alexey Romanov Avatar answered Oct 01 '22 14:10

Alexey Romanov