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 Java Discussion :

Problème sur exécution de méthode


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut Problème sur exécution de méthode
    Bonjour,
    j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static String xmlBalise(String nom) {
    		nom.replace("é", "e");
    		nom.replace("ê", "e");
    		nom.replace("è", "e");
    		nom.replace("à", "a");
    		nom.replace("â", "a");
    		nom.replace("ä", "a");
    		nom.replace("ë", "e");
    		nom.replace("-", "_");
    		nom.replace(" ", "_");
    		nom.replace("'", "_");	
    		return nom;
    	}
    Ca me permet de transformer une chaîne contenant potentiellement des caractères non conformes en un tag conforme XML. Mais quand je fais l'appel suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(UtilsXml.xmlBalise("Dégâts supplémentaires"));
    j'obtiens le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dégâts supplémentaires
    Visiblement j'ai raté quelque chose...
    Merci pour votre aide.

  2. #2
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Il faut te référer à la méthode replace de la classe String dans la javadoc http://javasearch.developpez.com/j2s...harSequence%29

    Tu trouvera que cette méthode retourne un nouveau String et ne modifie pas le String sur lequel elle a été appelée. Donc tout betement, ton code devra ressemblé à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static String xmlBalise(String nom) {
    		nom = nom.replace("é", "e");
    		nom = nom.replace("ê", "e");
    		nom = nom.replace("è", "e");
    		nom = nom.replace("à", "a");
    		nom = nom.replace("â", "a");
    		nom = nom.replace("ä", "a");
    		nom = nom.replace("ë", "e");
    		nom = nom.replace("-", "_");
    		nom = nom.replace(" ", "_");
    		nom = nom.replace("'", "_");	
    		return nom;
    	}
    Mais attention, il doit surement exister une solution plus convenable. Moi je n'ai fait qu'adapter ta solution pour qu'elle marche.

    Bon courage.

  3. #3
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Salut !

    j'ai trouvé ça un jour sur le forum (pas testé) :

    SUPPRIMER LES ACCENTS DANS UNE CHAINE :

    public static String removeAccent(String source) {
    return Normalizer.normalize(source, Normalizer.Form.NFD).replaceAll("[\u0300-\u036F]", "");
    }

    Pour l'explication :

    * Normalizer.normalize(source, Normalizer.Form.NFD) renvoie une chaine unicode décomposé. C'est à dire que les caractères accentué seront décomposés en deux caractères (par exemple "à" se transformera en "a`").
    * Le replaceAll("[\u0300-\u036F]", "") supprimera tous les caractères unicode allant de u0300 à u036F, c'est à dire la plage de code des diacritiques (les accents qu'on a décomposé ci dessus donc).
    à voir...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    Citation Envoyé par LinkinSelim Voir le message
    Il faut te référer à la méthode replace de la classe String dans la javadoc http://javasearch.developpez.com/j2s...harSequence%29

    Tu trouvera que cette méthode retourne un nouveau String et ne modifie pas le String sur lequel elle a été appelée. Donc tout betement, ton code devra ressemblé à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static String xmlBalise(String nom) {
    		nom = nom.replace("é", "e");
    		nom = nom.replace("ê", "e");
    		nom = nom.replace("è", "e");
    		nom = nom.replace("à", "a");
    		nom = nom.replace("â", "a");
    		nom = nom.replace("ä", "a");
    		nom = nom.replace("ë", "e");
    		nom = nom.replace("-", "_");
    		nom = nom.replace(" ", "_");
    		nom = nom.replace("'", "_");	
    		return nom;
    	}
    Mais attention, il doit surement exister une solution plus convenable. Moi je n'ai fait qu'adapter ta solution pour qu'elle marche.

    Bon courage.
    Effectivement, je suis un boulet, j'ai corrige 5 minutes après le post.

    Merci quand même...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 25
    Par défaut
    Citation Envoyé par fraco Voir le message
    Salut !

    j'ai trouvé ça un jour sur le forum (pas testé) :



    à voir...
    En fait ca me parait plus compliqué que ce que je fais. En plus, j'ai d'autres caractères à filtrer (" ","ç","-"...) du coup je suis pas sur que ca marche totalement.

    Merci quand même.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par arkhamon1 Voir le message
    En fait ca me parait plus compliqué que ce que je fais. En plus, j'ai d'autres caractères à filtrer (" ","ç","-"...) du coup je suis pas sur que ca marche totalement.
    Ça marche parfaitement avec tous les diacritiques, donc cédille incluse. Mais en effet, ça ne permet pas de traiter le reste : espaces, tirets, œ, æ, €...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il serait préférable de remplacer les replace(CharSequence,CharSequence) par des replace(char,char)...


    Sinon on pourrait envisager de faire son propre replace() qui gèrerait plusieurs caractères...


    a++

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

Discussions similaires

  1. Problème d'exécution d'une méthode sur le server
    Par SonnyFab dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/08/2010, 13h00
  2. Réponses: 4
    Dernier message: 02/06/2006, 16h30
  3. Problême d'exécution des servlets sur tomcat
    Par naima2005 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 07/05/2006, 07h54
  4. Problème d'exécution sur un OnMouseWheel
    Par Omeggg dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/04/2006, 18h24

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