Треки
/
Dart
Dart
/
Вправи
/
Номер телефону
Номер телефону

Номер телефону

Легка

Вступ

Ми приєдналися до LinkLine, провідної телекомунікаційної компанії, яка працює над забезпеченням надійного звʼязку для всіх. Перед командою стоїть велике завдання: користувачі надсилають номери телефонів у найрізноманітніших форматах: з дефісами, пробілами, крапками, дужками й навіть префіксами. Одні номери дійсні, а інші неможливо використати.

Наше завдання - перетворити цей хаос на лад. Ми очистимо дійсні номери й відформатуємо їх належним чином для використання в системі. Водночас ми визначимо й відфільтруємо всі недійсні записи.

Успіх роботи LinkLine залежить від нашої здатності відокремити корисне від непридатного. Чи готові ми взятися за це завдання й підтримувати безперебійний звʼязок?

Вказівки

Упорядковуємо номери телефонів так, щоб на них можна було надсилати SMS-повідомлення.

Північноамериканський план нумерації (NANP) - це система телефонної нумерації, яку використовують багато країн Північної Америки, як-от США, Канада чи Бермуди. Усі країни NANP мають однаковий міжнародний код країни: 1.

Номери NANP - це десятизначні числа, які складаються з тризначного коду зони нумерації, відомого як код зони, і семизначного місцевого номера. Перші три цифри місцевого номера - це код станції, а далі йде унікальний чотиризначний номер, тобто номер абонента.

Зазвичай формат записують так:

NXX NXX-XXXX

де N - це будь-яка цифра від 2 до 9, а X - будь-яка цифра від 0 до 9.

Іноді перед ними також додають код країни (записаний як 1 або +1).

Ваше завдання - упорядкувати по-різному відформатовані номери телефонів, прибравши розділові знаки та код країни, якщо він присутній.

Наприклад, такі вхідні дані

  • +1 (613)-995-0253
  • 613-995-0253
  • 1 613 995 0253
  • 613.995.0253

мають давати на виході

6139950253

Примітка: Оскільки ця вправа стосується лише номерів телефонів, які використовуються в країнах NANP, дійсним кодом країни вважається лише 1.

Порада

Функція з типом повернення може повертати дані лише цього типу та null. Однак той, хто викликає функцію, розраховує лише на один тип даних.

Приклад:

String hello(int a){
    if ( a == 0){
        return "a";
    } else {
        return null;
    }
}

Щоб було зрозуміліше, що ця функція може також повертати null або більше типів даних, використайте dynamic.

dynamic hello(int a){
    if ( a == 0){
        return "a";
    } else {
        return null;
    }
}
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Dart Exercism

Час розпочати Номер телефону?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Dart, а також 78 вправ та справжнє наставництво від людей, і все це безкоштовно.