Les solutions ci-dessus sont supérieures, en particulier si vous utilisez Java, et rencontrez plus de numéros avec plus de 10 chiffres tels que le préfixe de code international ou des numéros d'extension supplémentaires. Cette solution est basique (je suis un débutant dans le monde des regex) et conçue avec les numéros de téléphone américains à l'esprit et n'est utile que pour les chaînes avec seulement 10 chiffres avec peut-être quelques caractères de formatage, ou peut-être pas de caractères de formatage du tout (juste 10 chiffres ). En tant que tel, je recommanderais cette solution uniquement pour les applications semi-automatiques. Personnellement, je préfère stocker les numéros sous forme de seulement 10 numéros sans caractères de formatage, mais je souhaite également pouvoir convertir ou nettoyer les numéros de téléphone au format standard que les personnes normales et les applications / téléphones reconnaîtront instantanément à volonté.
Je suis tombé sur cet article à la recherche de quelque chose que je pourrais utiliser avec une application de nettoyage de texte dotée de capacités PCRE Regex (mais pas de fonctions java). Je publierai ceci ici pour les personnes qui pourraient utiliser une solution Regex pure et simple qui pourrait fonctionner dans une variété d'éditeurs de texte, de nettoyeurs, d'extensions ou même de gestionnaires de presse-papiers. J'utilise personnellement Sublime et TextSoap. Cette solution a été conçue pour Text Soap car elle se trouve dans la barre de menus et fournit un menu déroulant où vous pouvez déclencher des actions de manipulation de texte sur ce qui est sélectionné par le curseur ou sur ce qui se trouve dans le presse-papiers.
Mon approche est essentiellement deux substitution / recherche et remplacement des expressions régulières. Chaque recherche de substitution et remplacement implique deux expressions régulières, une pour la recherche et une pour remplacer.
Substitution / Rechercher et remplacer # 1
- La première substitution / recherche et remplacement supprime les nombres non numériques d'un nombre à 10 chiffres autrement en une chaîne de 10 chiffres.
Première substitution / expression régulière de recherche :\D
- Cette chaîne de recherche correspond à tous les caractères qui ne sont pas un chiffre.
First Substitution / Replace Regex: "" (rien, pas même un espace)
- Laissez le champ de remplacement complètement vide, aucun espace blanc ne doit exister, y compris les espaces. Cela entraînera la suppression de tous les caractères non numériques correspondants. Vous devriez avoir entré avec 10 chiffres + caractères de formatage avant cette opération et sortir avec 10 chiffres sans caractères de formatage.
Substitution / Rechercher et remplacer # 2
- La seconde substitution / rechercher et remplacer recherche une partie des groupes de captures d'exploitation pour l' indicatif régional
$1
, un groupe de capture pour la deuxième série de trois chiffres $2
, et le dernier groupe de capture pour la dernière série de quatre numéros $3
. L'expression régulière de la partie de substitution de l'opération insère le formatage du numéro de téléphone américain entre le groupe de chiffres capturé.
Deuxième substitution / expression régulière de recherche :(\d{3})(\d{3})(\d{4})
Second Substitution / Replace Regex:\($1\) $2\-$3
La barre oblique inverse \
échappe aux caractères spéciaux (
, )
,
(<-whitespace), et -
puisque nous les insérer entre nos chiffres capturés dans des groupes de capture $1
, $2
, et $3
pour le numéro de téléphone aux États - Unis des fins de mise.
Dans TextSoap, j'ai créé un nettoyeur personnalisé qui inclut les deux actions d'opération de substitution, donc en pratique, cela semble identique à l'exécution d'un script. Je suis sûr que cette solution pourrait être améliorée mais je m'attends à ce que la complexité augmente un peu. Une version améliorée de cette solution est accueillie comme une expérience d'apprentissage si quelqu'un souhaite ajouter à cela.