Я ищу метод, который возвращает логическое значение, если строка, переданная ею, является допустимым числом (например, «123.55e-9», «-333,556» «). Я не хотите просто сделать:Библиотека Java для проверки того, содержит ли строка число * без * исключений
public boolean isANumber(String s) {
try {
BigDecimal a = new BigDecimal(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
Очевидно, что функция должна использовать государственную машину (DFA) для разбора строки, чтобы убедиться, что недопустимые примеры не обмануть его (например, «-21, 22.22.2 "," 33-2 "). Вы знаете, существует ли такая библиотека? Я действительно не хочу писать это сам, поскольку это такая очевидная проблема, что я уверен, что я буду изобретать колесо.
Спасибо,
Ник
Почему именно вы не хотите использовать синтаксический анализ из BigDecimal? На самом деле это самый простой способ. – Jorn
Хотелось бы узнать, почему вы не хотите использовать фрагмент, который вы дали? Если вам нужно _use_ номер, который вы должны проанализировать? Это просто проверка того, что строка может перейти на бэкэнд как есть? –
Потому что Исключения не относятся к этому случаю. Исключения есть, ну, для исключений, а не для управления программой. – Malax