Задача: Банкоматы допускают 4 или 6-значные ПИН-коды, а ПИН-коды не могут содержать ничего, кроме 4 цифр или 6 цифр. Если функции передана правильная строка PIN, верните true, иначе верните false.
Проблема: Нам подаются разные символы, например пробел или вот такой 9¾. Я предусмотрел в коде варианты по ASCII таблицы, а вот откуда другие символы появляются для теста не совсем понимаю. Знаю, что есть другие таблицы кодировок, но как тогда можно все варианты предусмотреть?
Код:
public static boolean validatePin(String pin) {
char[] chArray = pin.toCharArray();
for (char a = 1; a <= 47; a++) {
for (char b = 58; b < 128; b++) {
for (int i = 0; i < chArray.length; i++) {
if (chArray[i] == a || chArray[i] == b) {
return false;
}
}
}
}
if (chArray.length == 4 || chArray.length == 6) {
return true;
}
else return false;
}
Pattern.compile("^\\d+$").matcher(pin).find()
UPD: Что означают символы:
Подробнее о регулярных выражениях можно прочитать, например, здесь
Конечный код, с помощью комментария получилось уменьшить.
public static boolean validatePin(String pin) {
char[] chArray = pin.toCharArray();
for (int i = 0; i < chArray.length; i++) {
if (chArray[i] <= 47 || chArray[i] >= 58) {
return false;
}
}
if (chArray.length == 4 || chArray.length == 6) {
return true;
}
else return false;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Добрый день пишу простой сайтПытаюсь избавиться от того что под одним логином и паролем могли сидеть 2 человека одновременно
подскажите пожалуйста как добавить в данную регулярку данные символы чтобы они игнорировались в конце
Всем привет! Я установил библиотеку через composer для работы с Facebook API для PHP, выполняя пример кода, который описан в официальной документации: