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 :

Gérer les espaces entre les mots


Sujet :

Langage Perl

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 119
    Points
    119
    Par défaut Gérer les espaces entre les mots
    Bonjour,

    Mon programme m'affiche actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    aaa   111
    b   222
    cccc   333
    et j'aimerai avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    aaa   111
    b     222
    cccc  333
    Cela est-il réalisable?

    Merci d'avance.

  2. #2
    Membre actif Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Points : 236
    Points
    236
    Par défaut
    Bonjour,

    Pourquoi ne pas utiliser de tabulations ?

    Je te propose de remplacer tes espaces par une tabulation :
    $ligne =~ s/\s+/\t/g;

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 119
    Points
    119
    Par défaut
    Merci.
    J'avais quand même déjà des tabulations.

    Je remplace donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print FILE "$name \t $number\n"
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print FILE "$name s/\s+/\t/g $number\n"
    ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Regarde les fonctions printf et sprintf.

    Exemple d'utilisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $a = "aaa";
    my $b = "bbb";
    printf "%10s%20s%10s", $a, $a, $b;
    printf " %10s%20s%10s", 'a', 'b', 'c'
    Cela imprime:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
           aaa                 aaa       bbb
             a                   b         c
    La chaîne de format "%10s%20s%10s" spécifie:
    - %10s: le premier argument ($a) doit être imprimé comme une chaîne de caractère justifiée à droite dans une colonne de 10 caractères
    - %20s: le deuxième argument ($a) doit être imprimé comme une chaîne de caractère cadrée à droite dans une colonne de 20 caractères
    - %10s: le troisième argument ($b) doit être imprimé comme une chaîne de caractère cadrée à droite dans une colonne de 10 caractères.

    Ce n'est qu'un exemple, il y a de très nombreuses autres possibilités.

    EDIT: je n'avais pas vu les réponses précédentes. Les tabulations ne résoudront pas tous les cas (notamment si les différences entre les mots sont plus grandes que 5 caractères)

  5. #5
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    oui

    3 solutions (au moins) :

    1) avec write/format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    format =
    @<<<<@>>>
    $str, int($num)
    .
    $t = {'aaa' => 111, 'b' => 222, 'ccc' => 333}; 
    foreach $str (sort keys %$t) {
    	$num=$t->{$str};
    	write;
    }
    2) avec printf :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $t = {'aaa' => 111, 'b' => 222, 'ccc' => 333}; 
    foreach $str (sort keys %$t) {
    	printf "%-6s%3d\n", $str, $t->{$str};
    }
    3) avec print et length :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $t = {'aaa' => 111, 'b' => 222, 'ccc' => 333}; 
    foreach $str (sort keys %$t) {
    	print $str, " "x(6-length($str)), $t->{$str}, "\n";
    }
    à adapter en fonction du besoin naturellement !

  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
    Il n'y a même pas d'adaptation à faire, il faut utiliser la fonction printf .

  7. #7
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    j'ai essayé de trouver des infos dessus sans trop de succès... mais tu déconseilles donc l'usage de write toi ?

    (j'avoue, le print + lentgh est un peu tiré par les cheveux...)

    ps.: l'adaptation, c'était pour les tailles des champs

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

Discussions similaires

  1. Retirer les espaces entre les boutons
    Par j_esti dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 19/09/2013, 12h36
  2. Réponses: 7
    Dernier message: 20/11/2012, 14h24
  3. Enlever les espaces entre les JLabel
    Par Freeluvs dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 25/02/2010, 19h50
  4. Réponses: 4
    Dernier message: 11/09/2007, 12h30
  5. Les DTD et les espaces entre cellules de tableaux
    Par YuGiOhJCJ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/01/2006, 22h26

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