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 :

replaceAll exception


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut replaceAll exception
    Bonjour;

    j'ai une exception suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    org.apache.jasper.JasperException: Illegal group reference
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    lors de l'éxécution de mon test suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            String text = "Modifications sur [PSEUDO] effectuées";
            String str = "co$#351;kun";
            text = text.replaceAll("\\[PSEUDO\\]", str);
            assertEquals("Modifications sur co$#351;kun effectuées", text);
    C'est le dollar qui est à l'origine de l'erreur mais je n'ai aps trouvé sur google une solution à ce problème

  2. #2
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Quand tu fais un replaceAll(), tu peux faire reference aux groupes avec $ suivi d'un nombre. Par exemple si tu as la regex ([ab])c et que tu fais un replaceAll() sur la chaine "bc", alors $1 == "b". Bref, echappe ton signe $ par un \\.

    Extrait de la doc de String.replaceAll() :

    Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll.
    Bref, comme toujours il faut lire la doc

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Citation Envoyé par Gfx
    Quand tu fais un replaceAll(), tu peux faire reference aux groupes avec $ suivi d'un nombre. Par exemple si tu as la regex ([ab])c et que tu fais un replaceAll() sur la chaine "bc", alors $1 == "b". Bref, echappe ton signe $ par un \\.

    Extrait de la doc de String.replaceAll() :

    Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll.
    Bref, comme toujours il faut lire la doc
    ok et comment j'échappe mon $ avec \\ ???

  4. #4
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Comme ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String str = "co\\$#351;kun";

  5. #5
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Surtout que tu as fait pareil avec les [ et ] ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text = text.replaceAll("\\[PSEUDO\\]", str);

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Citation Envoyé par moritan
    Comme ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      String str = "co\\$#351;kun";
    lol ok mais je peux pas le faire comme ca je sais pas ce qu'il y a d'avance dans STR . Mon morceau de code n'était qu'un exemple !

    comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     str = str.replaceAll("\\$", "\\\\\\$");

  7. #7
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Eh bien tu fais un str.replaceAll("\\$", "\\\\$").

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

Discussions similaires

  1. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  2. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35
  3. Réponses: 3
    Dernier message: 01/11/2002, 14h30
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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