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 :

uc() et map substitution


Sujet :

Langage Perl

  1. #1
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut uc() et map substitution
    Bonjour,

    Je poste par curiosité. Je n'utilise que très peu la fonction MAP et de manière basique.

    je me demandais comment en très peu de ligne modifier une lettre dans une chaîne.

    Pour l'exemple je souhaite mettre la lettre m en majuscule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chaine = "ceci est : ma chaine";
    et donc avoir en sortie : "ceci est : Ma chaine"

    j'ai essayé cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @new  = ( map { uc($tab[11]) } (@tab = split('', $chaine))  );
    Mais ça me renvoie plusieurs fois la lettre pointé en majuscule.

    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  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
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $chaine = "ceci est : ma chaine";
    $chaine =~ s/m/M/g;
    print $chaine,"\n";

  3. #3
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    hello Djibril et bonne année,

    je n'avais pas suffisamment précisé.

    je ne connais pas la lettre.
    mais je connais la place exacte et /ou j'ai un point de répère.

    dans l'exemple c'est soit l'emplacement 11 soit le deuxpoints espace.
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  4. #4
    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
    Bonne année aussi : $chaine =~ s/(.{11})(.)/$1\U$2/;

  5. #5
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Extra J'ai bien de poser la question et du coup je me refais un petit peu de formation sur les caractères spéciaux !

    Merci et bonne journée
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  6. #6
    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
    La méthode proposée par Djibril est bien meilleure, mais voici comment on pourrait utiliser un map dans un script uniligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $  perl -E 'my $c = 0; print join "",  map { $c++; $c == 12 ? uc $_ : $_;} split //, "ceci est : ma chaine";'
    ceci est : Ma chaine

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2003, 18h24
  2. Problème avec memory mapping
    Par gemai dans le forum C
    Réponses: 13
    Dernier message: 04/07/2003, 09h50
  3. [langage] substitution de caractère
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2003, 07h47
  4. [langage] substitution chaine
    Par sati dans le forum Langage
    Réponses: 4
    Dernier message: 11/12/2002, 10h01
  5. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47

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