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?
One option I've found is Apache Commons Validator (still non-thread-safe).
来源:https://stackoverflow.com/questions/11591810/parsing-numbers-safely-and-locale-sensitively