Как я могу проверить данный шаблон в диалоговом окне ввода?

У меня есть диалоговое окно ввода, и я хочу проверить, набрал ли пользователь определенный шаблон. Например, пользователь может ввести любое число - и любое число. Как-то так 10-20. Как я могу проверить, набрал ли пользователь такой шаблон?

Может быть регулярное выражение, что-то вроде input.matches("\\d+-\\d+")?

Eritrean 15.03.2022 19:18

Симос, гарантированно ли, что числа будут целыми положительными?

hfontanez 15.03.2022 19:22

@hfontanez да, должны быть только положительные целые числа!!!

Simos Sigma 15.03.2022 19:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы проверить правильность ввода, сделайте следующее:

в Яве:

Pattern pattern = Pattern.compile("^[0-9]+-[0-9]+",Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("10-20");
boolean matchFound = matcher.find();
if (matchFound) {
  System.out.println("Match found");
} else {
  System.out.println("Match not found");
}

«Я не знаю, на каком языке вы работаете» Теги в вопросе должны были быть раздачей.

hfontanez 15.03.2022 19:35
String класс содержит matcher метод.
hfontanez 15.03.2022 20:03
Ответ принят как подходящий

Предполагая, что числа гарантированно будут положительными целыми числами, предложение @Eritrean верно.

String input = "10-20";
String regex = "\\d+-\\d+";
System.out.println("Input is valid? " + input.matches(regex));

Для текущего ввода будет выведено, что ввод действителен ("true"), поскольку он соответствует заданному регулярному выражению. Ввод типа 10-A0 будет недействительным и, следовательно, будет выведено «false».

Если вход не гарантируется положительным целым числом, это мои предложения соответственно:

  1. Для значений со знаком добавьте [-+]? перед каждым шаблоном цифр: [-+]?\\d+-\\d+[-+]?. Это будет соответствовать целым числам со знаком, разрешив необязательные символы знака перед числом.
  2. Для чисел с плавающей запятой я предлагаю \\d*\\.?\\d+. Это регулярное выражение предполагает, что числовое значение будет иметь необязательные цифры до десятичной точки и неограниченное количество цифр после. Он также соответствует целочисленным значениям. Таким образом, регулярное выражение, такое как \\d*\\.?\\d+-\\d*\\.?\\d+, должно учитывать целые числа и числа с плавающей запятой, разделенные дефисом. Если вам требуются числа с плавающей запятой со знаком, следуйте предложению в № 1 выше.

@SimosSigma, готов поспорить! Спасибо, что так быстро откликнулись на мой ответ. Это редкость в наше время.

hfontanez 15.03.2022 20:05

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