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 :

replace.all avec caractère paranthese


Sujet :

Langage Java

  1. #1
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut replace.all avec caractère paranthese
    Re,

    je souhaite remplacer la séquence suivante
    <%= request.getContextPath() + "
    dans mon fichier cible j'ai par exemple la ligne :
    <img src=<%= request.getContextPath() + "/images/index.gif"%>
    Si je fais dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    newtext = newtext.replaceAll("<%= request.getContextPath",  "\"" + CONTEXT_PATH);
    Le résultat est statisfaisant :
    <img src=MoAppliWeb() + "/images/index.gif"%>
    Par contre si je code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    newtext = newtext.replaceAll("<%= request.getContextPath() + \"", "\"" + CONTEXT_PATH);
    Le séquence n'est pas remplacé, les () semblent poser problême

    Merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    la méthode replaceAll utilise des expressions régulières ; les caractères '(' et ')' ont un sens dans le cadre des expressions régulières, tout comme le '.', le '+' et le '*'. Échappe-les avec deux backslashes ("\\") pour qu'ils soient interprétés comme les caractères que tu souhaites.

  3. #3
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Dans mes test j'avais oublié de doubler le backslashes
    Merci

  4. #4
    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,


    Si tu n'utilises pas les expressions régulières, il est préférable d'utiliser replace().

    a++

  5. #5
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    l'objet String sur lequel j'effectue le replaceAll, contient plusieurs fois la même occurence

  6. #6
    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
    Citation Envoyé par totoche Voir le message
    l'objet String sur lequel j'effectue le replaceAll, contient plusieurs fois la même occurence
    Et ???

  7. #7
    Membre éprouvé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Et ???
    excuses-moi,
    je croyais que le replace ne s'effectué que sur la 1ere occurence

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    C'est vrai que le nom replaceAll() est trompeur. On a du coup l'impression que replace() ne fonctionne que sur la première occurrence, ce qui est faux.

    En fait il aurait mieux valu nommer cette fonction replaceRegex(), cela aurait évité bien des confusions.

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

Discussions similaires

  1. REPLACE avec caractères génériques
    Par loumy dans le forum Requêtes
    Réponses: 0
    Dernier message: 11/03/2011, 09h29
  2. [XL-2003] "Replace" avec caractère spécial
    Par FCL31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2010, 14h50
  3. Gros bug SQL Server avec caractère "²"
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/05/2005, 14h31
  4. Réponses: 3
    Dernier message: 11/10/2004, 17h26
  5. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12

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