Как предусмотреть все символы из таблиц кодировок

161
03 апреля 2022, 01:10

Задача: Банкоматы допускают 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;
  }
Answer 1
Pattern.compile("^\\d+$").matcher(pin).find()

UPD: Что означают символы:

  • начало строки: ^
  • конец строки: $
  • цифровой символ: \d
  • повторяется один или более раз: +

Подробнее о регулярных выражениях можно прочитать, например, здесь

Answer 2

Конечный код, с помощью комментария получилось уменьшить.

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;
  }
READ ALSO
Кража сессии (защита)

Кража сессии (защита)

Добрый день пишу простой сайтПытаюсь избавиться от того что под одним логином и паролем могли сидеть 2 человека одновременно

78
Как добавить в регулярку /\ []?

Как добавить в регулярку /\ []?

подскажите пожалуйста как добавить в данную регулярку данные символы чтобы они игнорировались в конце

224
php laravel 6 blade template

php laravel 6 blade template

Изучаю laravel 6 и постоянно возникает проблема с blade template

184
При использовании Facebook API PHP SDK возникает Fatal Error: Class &#39;FacebookAds\Api&#39; not found

При использовании Facebook API PHP SDK возникает Fatal Error: Class 'FacebookAds\Api' not found

Всем привет! Я установил библиотеку через composer для работы с Facebook API для PHP, выполняя пример кода, который описан в официальной документации:

90