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

Langage Perl Discussion :

Débutant : inserer un espace dans une chaine


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Débutant : inserer un espace dans une chaine
    Bonjour,

    J'aurais besoin d'inserer un espace dans une chaine de caractère numérique suivant le nombre de caractère de la chaine.
    Ex :
    chaine de 4 caractères : xxxx => xx xx
    chaine de 5 caractères : xxxxx => xx xxx
    ...

    Je bloque sur la substitution...
    Pourriez vous m'aider s'il vous plait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    sub Formatchaine
    {
      my $chaine = shift;
      my @tableau = split( // , $chaine);
      my $nbcaracteres = $#tableau + 1;
     
    #exemple avec 5 caractères
      if ($nbcaracteres == 5)
          {
          println "===> il y a bien 5 caracteres";
          $chaine =~ s/^\d{2}//g; #Grrr....
          return $chaine;
          }
      else
          {
      return $chaine;
          }
    }

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    ton exemple n'est pas clair, tu veux mettre un espace tous les deux caractereres? ou uniquement apres deux caracteres?
    Car dans ton exemple, on ne trouve pas l'interet du 4 et 5

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Désolé.
    Je voudrais uniquement inserer un espace apres 2 charactères.

  4. #4
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    Ben, pourquoi pas avec substr() ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $chaine="abcdef";
    print substr($chaine, 0, 2) . " " . substr($chaine, 2);

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Exact
    Je ne connais malheureusement pas encore toutes les commandes
    je chercherai un peu plus la prochaine fois...

    Merci !

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $chaine="abcdef";
    $chaine =~ s/(.{2})(.+)/$1 $2/;
    print $chaine;
    voilà

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    La méthode avec le substr fonctionne correctement dans mon code.

    J'ai essayé avec le substitute mais je ne sais pas pourquoi il ne me retourne que seul 1 chiffre...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $chaine ="471980";
    $chaine =~ s/(.{3})(.+)/$1 $2/;
    print "$chaine";
    ca me remonte "1"... alors que ca devrait faire "471 980", non ?

    Je developpe avec un éditeur de text (PSPad) sous windows et j'utilise Active Perl 5.8, ne serait-ce pas dû à ca ?

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par ddouet2000
    La méthode avec le substr fonctionne correctement dans mon code.

    J'ai essayé avec le substitute mais je ne sais pas pourquoi il ne me retourne que seul 1 chiffre...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $chaine ="471980";
    $chaine =~ s/(.{3})(.+)/$1 $2/;
    print "$chaine";
    ca me remonte "1"... alors que ca devrait faire "471 980", non ?

    Je developpe avec un éditeur de text (PSPad) sous windows et j'utilise Active Perl 5.8, ne serait-ce pas dû à ca ?
    bah oui, moi ça me print bien 471 980
    moi aussi j'utilise PSPAD et utilise perl 5.8.8

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Sinon tu peux aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my $chaine = "471980";
    substr $chaine, 2, 0, ' ';
    print "$chaine";
    --
    Jedaï

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Supprimer les espaces dans une chaine de caractères
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 23/07/2007, 22h24
  3. inserer un entier dans une chaine de caractere
    Par thonyitii dans le forum C
    Réponses: 11
    Dernier message: 02/01/2007, 22h00
  4. espace dans une chaine de caractere
    Par nathoun92120 dans le forum Flash
    Réponses: 1
    Dernier message: 31/10/2006, 16h40
  5. [RegEx] Insérer espace dans une chaîne de caractères
    Par bb62 dans le forum Langage
    Réponses: 9
    Dernier message: 17/07/2006, 09h01

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