Парсинг чисел безопасно и чувствительно к локали

В Java NumberFormat 1) не является потокобезопасным (который можно обойти с помощью ThreadLocal); 2) неудобно использовать правильно для простейшего случая использования, когда я знаю, должна ли строка содержать int, long или double, и хочу такой API, как:

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

где исключение выдается, когда строка не полностью проанализирована. Очевидно, что такую ​​обертку легко написать, но я не смог найти ее в Guava или Apache Commons Lang. Я только что пропустил это? Или есть другое более-менее стандартное решение для этого?

1 ответ

Решение

Один из вариантов, который я нашел, - это Apache Commons Validator (все еще не защищенный от потоков).

Другие вопросы по тегам