Parcours
/
Scala
Scala
/
Exercices
/
Numéro de téléphone
Numéro de téléphone

Numéro de téléphone

Facile

Introduction

Tu viens de rejoindre LinkLine, une entreprise de communications de premier plan qui s'efforce de garantir des connexions fiables pour tout le monde. L'équipe doit relever un grand défi : les utilisateurs soumettent des numéros de téléphone dans toutes sortes de formats, avec des tirets, des espaces, des points, des parenthèses et même des préfixes. Certains numéros sont valides, tandis que d'autres sont impossibles à utiliser.

Ta mission est de transformer ce chaos en ordre. Tu vas nettoyer les numéros valides et les mettre en forme comme il se doit pour qu'ils puissent servir dans le système. En même temps, tu vas repérer et écarter les entrées non valides.

Le bon fonctionnement des activités de LinkLine dépend de ta capacité à séparer ce qui est utile de ce qui ne l'est pas. Es-tu prêt à relever le défi et à faire en sorte que les connexions continuent de fonctionner sans accroc ?

Instructions

Nettoie les numéros de téléphone saisis par l'utilisateur afin qu'on puisse leur envoyer des SMS.

Le plan de numérotation nord-américain (NANP) est un système de numérotation téléphonique utilisé par de nombreux pays d'Amérique du Nord comme les États-Unis, le Canada ou les Bermudes. Tous les pays du NANP partagent le même indicatif de pays : 1.

Les numéros du NANP sont des numéros à dix chiffres composés d'un indicatif de zone de plan de numérotation à trois chiffres, communément appelé indicatif de zone, suivi d'un numéro local à sept chiffres. Les trois premiers chiffres du numéro local représentent l'indicatif de central, suivis du numéro unique à quatre chiffres qui constitue le numéro d'abonné.

Le format est généralement représenté comme suit :

NXX NXX-XXXX

où N est un chiffre de 2 à 9 et X est un chiffre de 0 à 9.

Parfois, ils comportent aussi l'indicatif de pays (représenté par 1 ou +1) en préfixe.

Ta tâche consiste à nettoyer des numéros de téléphone formatés différemment en supprimant la ponctuation et l'indicatif de pays s'il est présent.

Par exemple, les entrées

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

doivent toutes produire la sortie

6139950253

Remarque : Comme cet exercice ne traite que des numéros de téléphone utilisés dans les pays du NANP, seul le 1 est considéré comme un indicatif de pays valide.

Instructions spécifiques au parcours

Pour plus de simplicité et de lisibilité, envisage d'utiliser les fonctions de collection de Scala plutôt que les méthodes String de Java. Souviens-toi qu'en Scala, une String est aussi implicitement une Seq[Char], ce qui fait que tu peux les appeler aussi facilement que les méthodes String.

Quelques exemples :

  • filter au lieu de replaceAll
  • take, takeRight, drop, head, tail au lieu de substring

Une autre idée qui vaut la peine d'être explorée serait de transformer la String en List[Char], puis d'utiliser le filtrage par motif avec l'opérateur ::.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Scala Exercism

Prêt à commencer Numéro de téléphone ?

Inscris-toi sur Exercism pour apprendre et maîtriser Scala avec 95 exercices, et un vrai mentorat humain, le tout gratuitement.