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

Collection et Stream Java Discussion :

java probleme sur la methode replaceAll() de la classe String


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 37
    Points
    37
    Par défaut java probleme sur la methode replaceAll() de la classe String
    Bonjour
    J'ai un petit souci pour la methode replaceAll de la classe String. En fait j'ai une chaine de caractere qui contient des caractere * (etoile) et je veut les remplacer tous par le caraactere "A". Je ne sais pas comment faire. Quelqu'un peut m'aider?

    J'ai essaye: replaceAll("*", "A"); et ca me jette une exception de type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2006
    Messages : 80
    Points : 75
    Points
    75
    Par défaut
    Salut,

    Ce caractère fait partie des caractères spéciaux. Tu as le caractère d'échappement des regex pour régler le problème.
    Mais comme ce caractère d'échappement est aussi l''échappement en java, tu dois l'appliquer à celui de la regexp...
    C'est valable pour tous les caractères spéciaux des regexp. La javadoc explique certainement ça.

    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "J*V*DOC".replaceAll("\\*", "A");

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


    replaceAll() utilise une expression régulière, et "*" n'est pas une expression régulière valide !

    Pour remplacer une caractère par un caractère, il est préférable d'utiliser replace() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s = s.replace('*', 'A');
    De même pour remplacer une chaine par une autre directement (sans regexp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s = s.replace("Ma chaine", "Mon Autre Chaine");
    a++

  4. #4
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Bonjour, la méthode replaceAll s'appuie sur les expressions régulières, donc soit il faut "échapper" ton caractère via un double "\", soit tu utilises la méthode replace qui elle se base sur des String.

    Les 2 solutions ont le même resultat. Dans ton cas il vaut mieux utiliser replace.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String toto = "to*to";
    toto = toto.replaceAll("\\*", "A");
     
    String tata = "ta*ta";
    tata = tata.replace('*', 'A');
    edit : doublement grillé

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/11/2010, 18h14
  2. java.lang.UnsatisfiedLinkError sur ma methode native
    Par fk04 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 18/03/2010, 11h23
  3. [CR 2008] [JAVA] Probleme paramètre sur requete
    Par ZULL dans le forum SDK
    Réponses: 1
    Dernier message: 22/10/2009, 12h21
  4. probleme sur l'api java.mail
    Par hamster. dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 16/07/2008, 10h40
  5. [D6][Java]Probleme avec JNI sur LoadVM();
    Par SubZero2 dans le forum Delphi
    Réponses: 10
    Dernier message: 22/06/2007, 17h16

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