В данной статье мы узнаем, как осуществить проверку на то, является ли заданная строка числом. Мы рассмотрим несколько способов: с использованием внешних библиотек и с помощью стандартного API JavaSE.
Способ 1: проверка, является ли строка числом (Java API)
Здесь мы используем только стандартный API JavaSE. В первом варианте мы пытаемся привести строку к типу Double, и если у нас это получается, мы считаем, что указанная строка – число:
public static boolean isNumeric(String str) { try { Double.parseDouble(str); return true; } catch (NumberFormatException e) { return false; } }
С помощью этого метода вы можете проверить целые числа, дробные числа, числа с ведущим знаком плюса или минуса.
Способ 2: проверка, является ли строка числом (Apache Commons)
В этом способе мы используем библиотеку Apache Commons. Если у вас Maven проект, укажите следующий артефакт в вашем файле pom.xml:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency>
С помощью метода NumberUtils.isParsable мы можем проверить, является ли указанная строка числом:
System.out.println(NumberUtils.isParsable("120.99")); // true System.out.println(NumberUtils.isParsable("+120.99f")); // true System.out.println(NumberUtils.isParsable("-120.99f")); // true System.out.println(NumberUtils.isParsable("120.99abc")); // false System.out.println(NumberUtils.isParsable("0xFF")); // false
Метод isParsable является обёрткой поверх Integer.parseInt, Long.parseLong, Float.parseFloat и Double.parseDouble. Его удобно использовать для того, чтобы самому не писать шаблонный код по перехвату исключений этих методов.
Исходный код
public class IsStringNumber1 { public static void main(String[] args) { System.out.println(isNumeric("120.99")); // true System.out.println(isNumeric("+120.99f")); // true System.out.println(isNumeric("-120.99")); // true System.out.println(isNumeric("120.99abc")); // false System.out.println(isNumeric("0xFF")); // false } public static boolean isNumeric(String str) { try { Double.parseDouble(str); return true; } catch (NumberFormatException e) { return false; } } }
import org.apache.commons.lang3.math.NumberUtils; public class IsStringNumber2 { public static void main(String[] args) { System.out.println(NumberUtils.isParsable("120.99")); // true System.out.println(NumberUtils.isParsable("+120.99f")); // true System.out.println(NumberUtils.isParsable("-120.99f")); // true System.out.println(NumberUtils.isParsable("120.99abc")); // false System.out.println(NumberUtils.isParsable("0xFF")); // false } }
Заключение
Мы рассмотрели различные способы проверить строку на то, является ли она числом.