IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Formatter un numéro de téléphone


Sujet :

Ruby

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut Formatter un numéro de téléphone
    Bonjour,

    Comme j'ai trés peu d'expérience en Ruby, je me permets de vous poser une question, qui a surement déja été traitée de nombreuses fois.
    C'est pas que je n'y arrive pas, mon probleme c'est que je n'ai pas de recul pour savoir quelles méthodes utiliser, pour que ce soit simple et efficace.

    Voila : J'ai les numéros de téléphone dans la base, type : string(10)
    Je voudrais les afficher joliment avec un caractere séparateur, paramétrable.
    exemple :
    Dans la base il y a ça : 1234567890
    Je voudrais afficher ça : 12 34 56 78 90
    Ou ça : 12-34-56-78-90

    Donc je conçois une méthode dans le Helper 'application.rb'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    module ApplicationHelper
     
      def joli_tel(numero,separateur)
        joli_tel = TRAITEMENT du numero avec séparateur
      end
     
    end
    Je suis sûr que plein d'entre vous ont déja fait ça.
    Auriez vous l'amabilité de me renseigner sur les fonctions Ruby que vous avez utilisé ?
    Merci beaucoup.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    pas sur que ce soit optimal, mais ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    chaine = "1234567890"
     
    cpt = 0
    my_array = []
     
    while cpt < chaine.length
      my_array << chaine[cpt, 2]
      cpt += 2
    end
     
    puts  my_array.join(" ")
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Avec Rails, on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def joli_tel(numero,separateur)
      numero.split('').in_groups_of(2).collect(&:join).join(separateur)
    end
    En Ruby pur, un peu moins lisible AMHA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def joli_tel(numero,separateur)
      numero.gsub(/\d{2}/, '\0'+separateur)[0..(-separateur.length-1)]
    end
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  4. #4
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    il existe un helper pour cela,

    number_to_phone, il marche pour les numéros US, tu n'as que le cracké pour le numéro français
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        # File vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb, line 15
    15:       def number_to_phone(number, options = {})
    16:         options   = options.stringify_keys
    17:         area_code = options.delete("area_code") { false }
    18:         delimiter = options.delete("delimiter") { "-" }
    19:         extension = options.delete("extension") { "" }
    20:         begin
    21:           str = area_code == true ? number.to_s.gsub(/([0-9]{3})([0-9]{3})([0-9]{4})/,"(\\1) \\2#{delimiter}\\3") : number.to_s.gsub(/([0-9]{3})([0-9]{3})([0-9]{4})/,"\\1#{delimiter}\\2#{delimiter}\\3")
    22:           extension.to_s.strip.empty? ? str : "#{str} x #{extension.to_s.strip}"
    23:         rescue
    24:           number
    25:         end
    26:       end

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    Nikel, merci pour les réponses.
    Et puis merci aussi de me l'avoir écrite en entier

    Alors j'ai opté pour celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      def joli_tel(numero)
        separateur = '.'
        joli_tel = numero.split('').in_groups_of(2).collect(&:join).join(separateur) 
      end
    Aprés réflexion, je laisse le choix du séparateur dans le helper, comme ça si on veut changer, on change que là, et ca impacte tout le projet.
    ( Je laisse aussi la ligne separateur=... pour une question de lisibilité )

    Edit pour répondre à Bolo : Lol il y a meme un helper Rails !
    Merci pour l'info. (dommage qu'il faille intervenir dessus...pour l'instant je vais tourner avec l'autre, c'est que je suis grave en retard sur mon projet là...)
    Allez, merci encore et bye bye

  6. #6
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    Oui ils ont pensé que au ricains, c'est pas tres compliqué il y a juste 3 a changé pour un 2

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    il y a juste 3 a changé pour un 2
    Hummm malheureusement non, c'est pas aussi simple.
    Mais ce helper est trés interessant, et je ne vais pas l'oublier.(possibilité d'avoir un séparateur par défaut, ou de le changer lors de l'appel au helper, c'est bien ça...)
    A l'occasion je le surchargerai pour une utilisation francaise.
    Merci.

  8. #8
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    je ne vois pas vraiment ou est la difficulté dans l'expression régulière.
    Le principal est que tu es trouvé la solution a ton problème

    a+

  9. #9
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 652
    Points
    652
    Par défaut
    je ne vois pas vraiment ou est la difficulté dans l'expression régulière
    ---> Quand t'en as jamais fait !
    Je ne pense pas que ce soit surhumain, mais je n'ai matériellement pas le temps de faire de l'extra là !
    Comme tu dis, le principal c'est d'avoir une solution

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le numéro de téléphone entrant
    Par louisss dans le forum Access
    Réponses: 23
    Dernier message: 26/07/2023, 18h21
  2. récuperation d'un numéro de téléphone
    Par herzleid dans le forum Delphi
    Réponses: 4
    Dernier message: 17/07/2007, 09h25
  3. Réponses: 3
    Dernier message: 26/07/2005, 16h16
  4. Identification de numéros de téléphone
    Par sfxElrick dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/03/2005, 18h40
  5. Insérer un numéro de téléphone
    Par Fleep dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 31/10/2004, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo