- Является ли строка числом
- Способ 1: проверка, является ли строка числом (Java API)
- Способ 2: проверка, является ли строка числом (Apache Commons)
- Заключение
- Rukovodstvo
- статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
- Java: проверьте, является ли строка числом
- Введение Строки — это удобный способ передачи информации и получения ввода от пользователя. В этой статье мы рассмотрим несколько способов проверки того, является ли String числовым в Java, то есть представляет ли String числовое значение. Проверьте, является ли строка числовой с помощью Core Java. Пользователи часто ошибаются при вводе значений, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода. Самый простой способ проверить, является ли строка числовой или нет, принадлежит нам.
- Вступление
- Проверьте, является ли строка числовой с помощью Core Java
- Проверьте, является ли строка числовой с помощью Apache Commons
- NumberUtils.isParsable ()
- NumberUtils.isCreatable ()
- NumberUtils.isDigits ()
- StringUtils.isNumeric ()
- StringUtils.isNumericSpace ()
- Проверьте, является ли строка числовой с помощью Regex
- Заключение
- Как проверить является ли строка числом java
Является ли строка числом
В данной статье мы узнаем, как осуществить проверку на то, является ли заданная строка числом. Мы рассмотрим несколько способов: с использованием внешних библиотек и с помощью стандартного 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:
org.apache.commons commons-lang3 3.9
С помощью метода 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 >>
Заключение
Мы рассмотрели различные способы проверить строку на то, является ли она числом.
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Java: проверьте, является ли строка числом
Введение Строки — это удобный способ передачи информации и получения ввода от пользователя. В этой статье мы рассмотрим несколько способов проверки того, является ли String числовым в Java, то есть представляет ли String числовое значение. Проверьте, является ли строка числовой с помощью Core Java. Пользователи часто ошибаются при вводе значений, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода. Самый простой способ проверить, является ли строка числовой или нет, принадлежит нам.
Вступление
Строки — это удобный способ передачи информации и получения ввода от пользователя.
В этой статье мы рассмотрим несколько способов проверить, является ли String числовым в Java, то есть представляет ли String числовое значение.
Проверьте, является ли строка числовой с помощью Core Java
Пользователи часто ошибочно набирают входные значения, поэтому разработчики должны как можно дольше держать их за руку во время операций ввода-вывода.
Самый простой способ проверить, является ли String числовым или нет, — использовать один из следующих встроенных методов Java:
- Integer.parseInt()
- Integer.valueOf()
- Double.parseDouble()
- Float.parseFloat()
- Long.parseLong()
Эти методы преобразуют заданную String в ее числовой эквивалент. Если они не могут его преобразовать, NumberFormatException , указывающее, что строка не является числовой.
Стоит отметить, что Integer.valueOf() возвращает new Integer() , а Integer.parseInt() возвращает примитивный int . Имейте это в виду, если такая разница изменит ход вашей программы.
String string = "10"; try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e)
Теперь для удобства мы можем абстрагировать эту функциональность во вспомогательный метод:
public static boolean isNumeric(String string) < int intValue; System.out.println(String.format("Parsing string: \"%s\"", string)); if(string == null || string.equals("")) < System.out.println("String cannot be parsed, it is null or empty."); return false; >try < intValue = Integer.parseInt(string); return true; >catch (NumberFormatException e) < System.out.println("Input String cannot be parsed to Integer."); >return false; >
Теперь мы можем просто позвонить:
String string = "10"; if(isNumeric(string)) < System.out.println("String is numeric!"); // Do something >else
Выполнение этого кода приведет к:
Parsing string: "10" String is numeric!
С другой стороны, если мы ожидаем, что String будет содержать действительно большое число, мы можем вызвать конструктор BigInteger(String) , который переводит представление String BigInteger .
Проверьте, является ли строка числовой с помощью Apache Commons
Apache Commons — одна из наиболее часто используемых сторонних библиотек для расширения базовой Java Framework. Это дает нам более точный контроль над основными классами Java, в данном случае над строками.
Мы рассмотрим два класса из библиотеки Apache Commons:
Оба из них очень похожи на свои аналоги в классическом Java-классе, но с акцентом на нулевые безопасные операции (с числами и строками соответственно), что означает, что мы можем даже определять значения по умолчанию для отсутствующих ( нулевых ) значений.
Давайте теперь посмотрим, как мы можем проверить числовые значения с помощью этих методов.
NumberUtils.isParsable ()
Этот метод принимает String и проверяет, является ли это число, которое можно анализировать, или нет, мы можем использовать этот метод вместо перехвата исключения при вызове одного из методов, которые мы упоминали ранее.
Это очень хорошо, потому что по возможности следует избегать решений, связанных с частой обработкой исключений — именно в этом нам помогает этот метод.
Обратите внимание, что шестнадцатеричные числа и научные обозначения не считаются анализируемыми.
Теперь нам даже не нужен вспомогательный вспомогательный метод, поскольку isParseable() возвращает само boolean
String string = "10"; if (NumberUtils.isParsable(string)) < System.out.println("String is numeric!"); >else
NumberUtils.isCreatable ()
Этот метод также принимает строку и проверяет, является ли это допустимым номером Java . С помощью этого метода мы можем охватить еще больше чисел, потому что действительный номер Java включает четные шестнадцатеричные и восьмеричные числа, научную нотацию, а также числа, отмеченные квалификатором типа.
Теперь мы даже можем использовать что-то вроде:
String string = "0x10AB"; if (NumberUtils.isCreatable(string)) < System.out.println("String contains a creatable number!"); >else
String contains a creatable number!
NumberUtils.isDigits ()
Метод NumberUtils.isDigits() проверяет, содержит ли строка только цифры Unicode. Если String содержит начальный знак или десятичную точку, метод вернет false :
String string = "25"; if (NumberUtils.isDigits(string)) < System.out.println("String is numeric!"); >else
StringUtils.isNumeric ()
StringUtils.isNumeric() является StringUtils эквивалент NumberUtils.isDigits() .
Если String проходит числовой тест, он все равно может генерировать NumberFormatException при синтаксическом анализе упомянутыми ранее методами, например, если он выходит за пределы диапазона для int или long .
Используя этот метод, мы можем определить, можем ли мы преобразовать String Integer :
String string = "25"; if (StringUtils.isNumeric(string)) < System.out.println("String is numeric!"); >else
StringUtils.isNumericSpace ()
Кроме того, если мы ожидаем найти больше чисел в isNumericSpace , еще один полезный StringUtils стоит упомянуть. Он проверяет, String только цифры или пробелы Unicode.
Давайте проверим строку, содержащую числа и пробелы:
String string = "25 50 15"; if (StringUtils.isNumericSpace(string)) < System.out.println("String is numeric!"); >else
Проверьте, является ли строка числовой с помощью Regex
Несмотря на то, что большинство разработчиков будут довольны использованием уже реализованного метода, иногда у вас может быть очень специфическая проверка шаблона:
public static boolean isNumeric(String string) < // Checks if the provided string // is a numeric by applying a regular // expression on it. String regex = "2+[\\.]?4*"; return Pattern.matches(regex, string); >
А затем мы можем вызвать этот метод:
System.out.println("123: " + isStringNumeric2("123")); System.out.println("I'm totally a numeric, trust me: " + isStringNumeric2("I'm totally a numeric, trust me"));
Выполнение этого дает нам следующий результат:
123: true I'm totally a numeric, trust me: false
Заключение
В этой статье мы рассмотрели несколько способов проверить, является ли строка числовой или нет (представляет собой число) в Java.
Мы начали с Core Java и NumberFormatException , после чего использовали библиотеку Apache Commons. Оттуда мы использовали StringUtils и NumberUtils чтобы проверить, является ли String числовым или нет, с различными форматами.
Licensed under CC BY-NC-SA 4.0
Как проверить является ли строка числом java
Также можно воспользоваться методом StringUtils.isNumeric() :
import org.apache.commons.lang3.StringUtils; public class App public static void main(String[] args) System.out.println(StringUtils.isNumeric("123")); // => true System.out.println(StringUtils.isNumeric("12a3")); // => false > >
Другой пример реализации метода с помощью регулярных выражений :
public static boolean isNumber(String str) return str.matches("-?\\d+"); >
Приведенный ниже метод isNumber() проверит является ли строка числом :
public class App public static void main(String[] args) System.out.println(isNumber("123")); // => true System.out.println(isNumber("12q3")); // => false > public static boolean isNumber(String str) try Integer.parseInt(str); > catch (Exception e) return false; > return true; > >