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

Java Discussion :

Remplacer les $ dans une chaine


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut Remplacer les $ dans une chaine
    Hello,

    Je souhaite remplacer la chaine de caractère "$$$$" par une chaine vide dans un String quelconque. Le problème est que la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.replaceAll("$$$$", "")
    N'a aucun effet. J'ai regardé dans la doc où il est écrit:
    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. Use Matcher.quoteReplacement(java.lang.String) to suppress the special meaning of these characters, if desired.
    J'utilise donc la méthode quoteReplacement comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s.replaceAll(Matcher.quoteReplacement("$$$$"), "") ;
    Mais sans plus de succès. J'en déduit que quelque chose m'échappe et j'en fait appel a vos lumières

    Merci d'avance!

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    quoteReplacement() est fait pour protéger le texte de remplacement, ce qui est inutile dans ton cas puisqu'il est vide.

    Pour protéger des caractères spéciaux du pattern il est préférable d'utiliser Pattern.quote() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.replaceAll(Pattern.quote("$$$$"), "")
    Mais vu que tu n'utilises pas les regexp tu peux utiliser directement replace() pour éviter ce genre de soucis :
    a++

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Les String sont "immuables" : elles ne peuvent être modifiées.

    La méthode replaceAll (comme toutes les méthodes de la classe String) ne modifie donc pas la chaîne initiale, mais renvoie une nouvelle chaîne correspondant à la modification demandée.

    Essaye donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaineModifiee = s.replace("$$$$","");
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Est-ce que tu as bien pensé à récupérer le résultat de l'instruction s.replaceAll(...) ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s.replaceAll(...); // s n'est pas modifié => instruction inutile
    s = s.replaceAll(...); // s prend la valeur de la chaîne dans laquelle on a effectué le remplacement

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

Discussions similaires

  1. [C#] Comment remplacer caracteres dans une chaine ?
    Par ChristopheOce dans le forum C#
    Réponses: 6
    Dernier message: 07/09/2011, 15h46
  2. Comment remplacer \b dans une chaine ?
    Par phd1963 dans le forum Langage
    Réponses: 5
    Dernier message: 13/08/2008, 20h58
  3. [PostgreSQL] [PostGreSQL] Trouver les ' et les remplacer par \' dans une chaine
    Par bossLINDROS dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2007, 10h31
  4. Réponses: 4
    Dernier message: 19/09/2006, 10h30
  5. gerer les ' dans une chaine pour eviter erreur sql
    Par Malone dans le forum Langage
    Réponses: 3
    Dernier message: 24/08/2005, 14h27

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