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 :

[Debutant(e)]probleme avec un replaceAll


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de Jovial
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut [Debutant(e)]probleme avec un replaceAll
    bonjour,
    je cherche à remplacer dans une chaine de caractere (String évidemment) les "+33" par des "0"
    bon j'ai essayé
    .replaceAll("+33","0")
    .replaceAll("\+33","0")
    .replaceAll("(+)(3)(3)","0")
    et aucun ne marche
    ca me balance une nullpointerexception que je ne comprends pas (ma string n'étant pas nulle)

    voilà donc si quelqu'un pourrait m'expliquer pourquoi ca merdouille ca m'aiderai

    merci d'avance



    [Modéré par Didier]
    Ajout de tag dans le titre
    Lire les règles du forum : Règles du forum Java

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    La fonction replaceAll ne convient pas à ton probleme... elle est à utiliser avec les expressions regulieres.
    Pour un remplacement chaine à chaine, utilise plutot la fonction replace(int start, int end, String str) de la classe Stringbuffer

  3. #3
    Membre du Club Avatar de Jovial
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    bah oui mais il doit bien y avoir une traduction de l'expression régulière "+33".

    parce que la solution que tu me donnes ne me convient pas car je ne sais pas a priori si la chaine contient +33.

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Utilise indexOf pour savoir si ta chaine contient +33. Si indexOf ne retourne pas -1, c'est que ta chaine contient 33.

    Si tu veux utiliser les expressions regulières utilise le pattern "(+33)" (avec les parentheses)

  5. #5
    Membre du Club Avatar de Jovial
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Je comprends bien comment faire pour détecter le +33 et le traiter au cas où mais je comprends pas pkoi ca ne marcherait pas avec le replaceAll

    pourtant le plus peut etre specifier dans une expression regulière

    .replaceAll("(+33)","0") <<< ca ne marche pas, meme exception

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    .replaceAll("(+33)","0") <<< ca ne marche pas, meme exception
    C'est forcemment que tu appel replaceAll sur une string qui est nulle, ca c sur, peu pas y avoir d'autre explication

  7. #7
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    le + est un caractere special des regex. As tu essaye de le despecialiser?

    replaceAll("\+33","0");

  8. #8
    Membre du Club Avatar de Jovial
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par Guybrush
    .replaceAll("(+33)","0") <<< ca ne marche pas, meme exception
    C'est forcemment que tu appel replaceAll sur une string qui est nulle, ca c sur, peu pas y avoir d'autre explication
    Je te propose d'essayer et tu verras
    ma chaine est non nulle pour cause de je lui ai fait un replaceAll juste avant qui a marché et j'ai testé sa nullité

    Citation Envoyé par calypso
    le + est un caractere special des regex. As tu essaye de le despecialiser?

    replaceAll("\+33","0");
    Oui et ça ne marche pas (erreur différente "illegal escape caracter" ou un truc dans le genre)
    Donc je pense qu'il y a un autre caractère d'échappement qu'il faut utiliser

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2002
    Messages
    194
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 194
    Points : 102
    Points
    102
    Par défaut
    Essaye ca, chez moi ca marche tres bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String s = "to+33to";
    s= s.replaceAll("(\\+33)","0");

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Salut le tigrounet, je te conseille ça replaceAll("[+33]","0");

    un rital

  11. #11
    Membre régulier Avatar de calypso
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 102
    Points : 100
    Points
    100
    Par défaut
    oui, c'est parce qu il faut despecialiser le + une fois pour la string, et une autre fois pour la regex

    --> replaceAll("\\+033","0")

    J ai teste, et ca semble marcher. CQFD



    C'est forcemment que tu appel replaceAll sur une string qui est nulle, ca c sur, peu pas y avoir d'autre explication
    non, pas forcement, ici il cherchait quel caractere devait etre matche au moins une fois (+), et ne le trouvait pas --> exception..

  12. #12
    Membre du Club Avatar de Jovial
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    oui c'est cool ca marche ainsi

    merci à tous
    y'a besoin des deux caracteres d'echappement !

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

Discussions similaires

  1. [Debutant] [struts] Probleme avec hibernate
    Par totonin dans le forum Hibernate
    Réponses: 50
    Dernier message: 26/06/2009, 13h15
  2. probleme avec string.replaceall(" ", "/")
    Par danou07200 dans le forum Débuter
    Réponses: 3
    Dernier message: 21/11/2008, 23h31
  3. [debutant]Archilog probleme avec la base
    Par smutmutant2003 dans le forum Administration
    Réponses: 21
    Dernier message: 14/08/2007, 12h04
  4. [DEBUTANT][GUI] probleme avec les icones
    Par magnus2005 dans le forum Windows
    Réponses: 3
    Dernier message: 11/04/2007, 11h42
  5. [debutant][swing] Probleme avec un Jpanel
    Par JeanMoul dans le forum Débuter
    Réponses: 6
    Dernier message: 27/08/2005, 19h07

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