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 :

[Debutant] Transformation chaine de caractères


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Par défaut [Debutant] Transformation chaine de caractères
    Bonjour, je dois créer un programme qui suit le déroulement suivant :
    1. on tappe en entrée clavier plusieurs phrases
    2. la première lettre de la phrase est mis en majuscule
    3. le reste de la phrase est mis en minuscule
    4. une phrase se termine par un point
    5. on écrit ensuite dans un fichier une phrase par ligne


    Exemple :
    entrée (au clavier) : le chat eSt Noir.comment çA VA.

    sortie (dans le fichier) : Le chat est noir.(\n)
    Comment ça va.
    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
    21
    22
     
    $fic1="lol.txt";
    $i = 0 ;
     
     
    open (F1, ">$fic1") || die "probleme d'ouverture du fichier" ;
     
     
     
    while ( i < 3  ) 
    {
     
      $ligne = <STDIN> ;
     
      $ligne=~ s/./\n/ ;
     
     
      print $ligne ; 
      print F1 $ligne ;
      $i ++ ;
     
    }
    J'espère que vous pourrez m'aider
    merci d'avance

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    Ton problème peut se résoudre suivant le schéma suivant (pas forcément le plus rapide ni le plus élégant mais je pense qu'il est didactique):
    1 - tu découpes la phrase tapée par l'utilisateur suivant le "point" grâce à la fonction "split" (attention il faut "échapper" le point de la sorte -> \. car c'est un caractère spécial. De cette façon tu as dans un tableau chaque phrase tapée par l'utilisateur.
    2 - Pour chaque phrase tu fais :
    2.1 - Mettre la phrase en minuscule grâce à la fonction "lc" (pour lowercase)
    2.2 - Mettre le premier caractère en majuscule grâce à la fonction ucfirst (pour uppercase first character)
    2.3 - Ajouter en fin de ta phrase un "point" suivi d'un "\n". (Le point est enlevé par la fonction split)
    2.4 - Faire ce que tu veux de ta phrase : écrire dans un fichier etc.

    Si tu as des problèmes à mettre cela en place refais nous signe. Si tu as des question n'hésite pas.

  3. #3
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Il y a également moyen de le faire avec un opérateur de substitution, mais ça nécessite d'utiliser quelques échappements dans la chaîne de sortie.

  4. #4
    Expert confirmé
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/([^.]+)\.\s*/\u\L$1\E.\n/g
    \u met la lettre suivante en majuscule (cf. ucfirst), \L met la chaîne qui suit en minuscule (cf. lc), \E met fin aux manipulations de casse.
    --
    Jedaï

  5. #5
    Membre chevronné
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Par défaut
    Oui, c'est à peu près ce que j'avais trouvé (je voulais laisser olivier1209 explorer les autres possibilités), à part que j'ai mis le \s* en début de regex, avant les parenthèses, histoire d'éliminer d'éventuels blancs inutiles en début de fichier.

  6. #6
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par Schmorgluck Voir le message
    Oui, c'est à peu près ce que j'avais trouvé (je voulais laisser olivier1209 explorer les autres possibilités)
    Oui, je ne suis pas moi-même certain que ce soit la meilleure solution (elle est bien illisible en tout cas) mais les séquences d'échappements uUlLEQ sont peu connues donc je me suis dis qu'un exemple ne ferait pas de mal. (Et ma regexp n'est qu'une suggestion, elle peut être améliorée)

    --
    Jedaï

Discussions similaires

  1. transformation chaine de caractères en objet
    Par yrandco49 dans le forum Langage
    Réponses: 3
    Dernier message: 26/06/2009, 16h51
  2. debutant en chaine de caractère
    Par acermez dans le forum Débuter
    Réponses: 2
    Dernier message: 05/01/2009, 08h34
  3. [Debutant(e)]Chaines de caractères
    Par moimoi_1 dans le forum Langage
    Réponses: 5
    Dernier message: 21/07/2005, 14h47
  4. [debutant]transform chaine en entier
    Par loutente dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/03/2005, 10h53
  5. Fonction qui transforme chaine de caractère par une autre?
    Par geoffreykill dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 09/12/2004, 14h31

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