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




Чтобы проверить правильность ввода, сделайте следующее:
в Яве:
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");
}
«Я не знаю, на каком языке вы работаете» Теги в вопросе должны были быть раздачей.
String класс содержит matcher метод.
Предполагая, что числа гарантированно будут положительными целыми числами, предложение @Eritrean верно.
String input = "10-20";
String regex = "\\d+-\\d+";
System.out.println("Input is valid? " + input.matches(regex));
Для текущего ввода будет выведено, что ввод действителен ("true"), поскольку он соответствует заданному регулярному выражению. Ввод типа 10-A0 будет недействительным и, следовательно, будет выведено «false».
Если вход не гарантируется положительным целым числом, это мои предложения соответственно:
[-+]? перед каждым шаблоном цифр: [-+]?\\d+-\\d+[-+]?. Это будет соответствовать целым числам со знаком, разрешив необязательные символы знака перед числом.\\d*\\.?\\d+. Это регулярное выражение предполагает, что числовое значение будет иметь необязательные цифры до десятичной точки и неограниченное количество цифр после. Он также соответствует целочисленным значениям. Таким образом, регулярное выражение, такое как \\d*\\.?\\d+-\\d*\\.?\\d+, должно учитывать целые числа и числа с плавающей запятой, разделенные дефисом. Если вам требуются числа с плавающей запятой со знаком, следуйте предложению в № 1 выше.@SimosSigma, готов поспорить! Спасибо, что так быстро откликнулись на мой ответ. Это редкость в наше время.
Может быть регулярное выражение, что-то вроде
input.matches("\\d+-\\d+")?