Проверка номера телефона

  • 24
  • Недоступна
Метод checkTelNumber должен проверять, является ли аргумент telNumber валидным номером телефона. Критерии валидности: 1) если номер начинается с '+', то он содержит 12 цифр. 2) если номер начинается с цифры или открывающей скобки, то он содержит 10 цифр.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (344)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Виктор
Уровень 30, Гомель, Belarus
2 августа, 19:28
Тесты, может кому пригодятся (сам споткнулся на скобке, которая идет последней в строке):
System.out.println("+380501234567 - true = " + checkTelNumber("+380501234567"));
       System.out.println("+3805012345673 - false = " + checkTelNumber("+3805012345673"));
       System.out.println("+38050123456 - false = " + checkTelNumber("+38050123456"));
       System.out.println("+38(050)1234567 - true = " + checkTelNumber("+38(050)1234567"));
       System.out.println("(050)1234567 - true = " + checkTelNumber("(050)1234567"));
       System.out.println("0(501)234567 - true = " + checkTelNumber("0(501)234567"));
       System.out.println("+38)050(1234567 - false = " + checkTelNumber("+38)050(1234567"));
       System.out.println("+38(050)123-45-67 - false = " + checkTelNumber("+38(050)123-45-67"));
       System.out.println("050ххх4567 - false = " + checkTelNumber("050ххх4567"));
       System.out.println("050123456 - false = " + checkTelNumber("050123456"));
       System.out.println("(0)501234567 - false = " + checkTelNumber("(0)501234567"));
       System.out.println("123456789012 - false = " + checkTelNumber("123456789012"));
       System.out.println("123(456)7890 - true = " + checkTelNumber("123(456)7890"));
       System.out.println("123456(789)0 - true = " + checkTelNumber("123456(789)0"));
       System.out.println("+123(456)789012 - true = " + checkTelNumber("+123(456)789012"));
       System.out.println("+123456(789)012 - true = " + checkTelNumber("+123456(789)012"));
       System.out.println("+123456789(456) - false = " + checkTelNumber("+123456789(456)"));
       System.out.println("Проверка на пустую строку \"\" - false = " + checkTelNumber(""));
       System.out.println("Проверка на null - false =  " + checkTelNumber(null));
Виктор
Уровень 30, Гомель, Belarus
2 августа, 19:28
String[] str = {"+(380)501234567", "+3(805)01234567", "+38(050)1234567", "+380(501)234567", "+3805(012)34567", "+38050(123)4567", "+380501(234)567", "+3805012(345)67", "+38050123(456)7"}; for (int i = 0; i < str.length; i++) { if (i == 0) System.out.println("\nВсё, что ниже, должно быть true"); System.out.println(str[i] + " = " + checkTelNumber(str[i])); }
Иван Full Stack Developer в Zona51
1 августа, 15:11
Интересно в какой такой стране так "+39050123(456)7" скобки пишут? По решению разрабов валидатору такое нравится
Айбелив Айкенфлаев
Уровень 36, Москва, Россия
18 июля, 17:52
За такое можно ногами по голове получить💩 СПОЙЛЕР (?)
Сонмониус
Уровень 39, Харьков, Ukraine
27 июня, 15:43
Блин, хотелось все условие вместить в одну регулярку, а пришлось в четыре)
Виктор
Уровень 30, Гомель, Belarus
2 августа, 19:24
А надо ли? кроме как "Ну ты крут" ничего не даст, читается код сложнее, редактируется сложнее. Помню еще на java syntax сказали, что лучше напишите больше, но проще.
Сонмониус
Уровень 39, Харьков, Ukraine
2 августа, 20:06
нет, не нужно. Лучше писать читаемый код.
Oleksandr
Уровень 43, Запорожье, Украина
19 июня, 16:48
Получилось решить с 3-ей попытки, используя 3 вложенных друг в друга условия if с регулярками внутри. Если кому нужно - github gist с моими тестами (вставить в main). Сюда не влезло. PS: на 19.06.2022 эту задачу решили 10026 учеников.
comrade_b
Уровень 33, Амстердам, Нидерланды
18 июня, 11:15
Ошибка в файле com/javarush/task/task22/task2212/Solution.java в строке : 18 Неизвестная ошибка компиляции А знаете на чем споткнулся валидатор, хоть код и компилируется и работает? Он не принял создание списка паттернов с последующим объявлением элементов. Огонь просто! P.s. закрасил решение, чтоб админы не забанили пост
Андрей Кадецкий
Уровень 35, Киев, Украина
16 июня, 09:32
Комментарии могут сбить вас с толку. Обратите внимание что номера телефонов не должны содержать тире "-".
Igor Petrashevsky
Уровень 37
3 июня, 18:31
колхозил 2.5 часа, но сдал с первой попытки. индусы - бойтесь! Правильное решение, конечно пролило взгляд на регулярки с другой стороны
Lone_Hunter
Уровень 36, Краснодар, Russian Federation
24 мая, 11:04
Метод checkTelNumber занял у меня 10 строк, регулярки получились очень простыми и читабельными, главное разбить проверки на несколько этапов
Александр
Уровень 26, Нижний Новгород, Россия
17 мая, 13:02
9914