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 :

Remplacer les caractères accentués dans une variable


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut Remplacer les caractères accentués dans une variable
    Bonjour,

    J'ai un petit soucis concernant les caractères accentués.

    J'ai mis en place un système de clé dans un fichier xml; je souhaite uniformiser ces clés et remplacer tout les caractères accentués par un caractère "normal".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if($texte =~ /<name key="(.+)">/)
    {
    ###ici je stocke ma valeur de clé
    $key = $1;
     
    ###ici je converti mes clés en majuscules
    $keyUC = uc($key);
    $texte =~ s/$key/$keyUC/g;
     
    }
    Sur ce bout de code j'ai converti mes clés en majuscules le problèmes est que je ne vois pas comment convertir tout les caractères accentués contenus dans ces clés en caractères "normaux".

    Exemple : pour " D.DUPRÉ " ==> je veux "D.DUPRE"

    Cette clé est stockée dans $keyUC pour information.
    Je sais comment remplacer tout les caractères accentués mais pour ne remplacer que ceux qui sont dans la variable $keyUC je ne sais pas comment m'y prendre.

    Merci de votre aide

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je sais comment remplacer tout les caractères accentués mais pour ne remplacer que ceux qui sont dans la variable $keyUC je ne sais pas comment m'y prendre.
    ... que veux-tu dire exactement?

    cela ne fonctionne t'il pas avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # avant la mise en majuscules
    $key =~ s/[éèê]/E/g;
     
    # après 
    $keyUC = uc($key);
    -- Jasmine --

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    bonne réponse je n'avais pas testé je pensais qu'il fallait spécifier la position du caractère c'est ce qui me faisait me poser des questions.

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par knebhi Voir le message
    bonne réponse je n'avais pas testé je pensais qu'il fallait spécifier la position du caractère c'est ce qui me faisait me poser des questions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $key =~ s/[éèê]/E/g;
    Le g (pour global) de s///g permet de dire que toutes les occurrences trouvées de é, è ou ê doivent être remplacées par E.



    Donc quand tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texte =~ s/$key/$keyUC/g;
    ... le g n'est utile que si tu as plusieurs fois $key dans $texte.
    -- Jasmine --

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

Discussions similaires

  1. [MySQL] les caractères accentués renvoient une valeur "null" dans un tableau array
    Par olivier8064 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/12/2012, 16h09
  2. [RegEx] remplacer tous les caractères accentués d'une chaine
    Par Alexdezark dans le forum Langage
    Réponses: 6
    Dernier message: 13/11/2009, 12h47
  3. Réponses: 11
    Dernier message: 11/11/2008, 18h38
  4. méthode POST avec les caractères '&' et '+' dans une variable
    Par ayvong dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/07/2008, 20h38
  5. Remplacer les caractères accentués dans une chaine
    Par shaun_the_sheep dans le forum Général Java
    Réponses: 5
    Dernier message: 07/05/2008, 10h41

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