Страницы

Поиск по вопросам

суббота, 6 октября 2018 г.

Как определить, является ли строка числом?

Я делал так, но мне кажется такой подход в чем-то неправильным: private static boolean isDigit(String s) throws NumberFormatException { try { Integer.parseInt(s); return true; } catch (NumberFormatException e) { return false; } }


Ответ

Я так понимаю, цель именно на Integer проверить? Тогда можно: s.matches("[-+]?\\d+") // для списка из 1 млн целых чисел и не чисел // (примерно 50/50) эффективность этой строчки практически // не отличается от описанной в вопросе функции. Если double, но без экспоненциальной нотации, то ((-|\\+)?[0-9]+(\\.[0-9]+)?)+ такое регулярное подойдёт. Хотя я бы не парился и сделал бы точно так же, только с Double.parseDouble(s), но я не показатель :) И ещё я обратил внимание на название метода - оно не очень корректное, т.к. во-первых, такой есть в классе Character, во-вторых, по смыслу подходит isNumeric(). Но это просто комментарии из серии "что я думаю по этому поводу".

Комментариев нет:

Отправить комментарий