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

JavaScript Discussion :

Expression regulière remplacement de toutes les occurences


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Expression regulière remplacement de toutes les occurences
    Bonjour a tous

    Voila j'essai de faire un repalceAll de "." par "-" et j ai un message d'erreur
    "Cet objet ne gere pas cette propriété ou cette méthode"

    Si je remplace le replaceall par replace cela marche mais juste pour le premier "." trouvé.

    Voici la ligne que je tape

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rchaine = lchaine.replace(".","-");
    J ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rchaine = lchaine.replace("\\.","-");
    Pas mieux

    Merci de votre aide

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 569
    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 569
    Points : 15 527
    Points
    15 527
    Par défaut
    normalenent rchaine = lchaine.replaceAll("\\.","-"); devrait fonctionner

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 845
    Points : 22 857
    Points
    22 857
    Billets dans le blog
    51
    Par défaut
    Comme l'indique la documentation de chacune de ces methodes :
    - replace() prend en argument une simple chaine de texte .
    - replaceAll() prend en argument une expression reguliere .
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    et avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rchaine = lchaine.replace("\\[.\\]","-");
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    String.replace(...) prend comme argument des 'char'
    String.replaceAll(...) prend des String comme arguments
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rchaine = lchaine.replaceAll(".", "-");
    
    ou
    
    rchaine = lchaine.replace('.', '-');
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 569
    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 569
    Points : 15 527
    Points
    15 527
    Par défaut
    Citation Envoyé par Fench Voir le message
    et avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rchaine = lchaine.replace("\\[.\\]","-");
    Je comprend pas ce que tu veux faire mais ce truc ne risque pas de marcher.
    On dirait une expression régulière bizarre utilisée dans une replace alors que les expressions régulières fonctionnent avec replaceAll.

    Citation Envoyé par OButterlin Voir le message
    String.replace(...) prend comme argument des 'char'
    String.replaceAll(...) prend des String comme arguments
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rchaine = lchaine.replaceAll(".", "-");
    
    ou
    
    rchaine = lchaine.replace('.', '-');
    A+
    Non! replaceAll() n'est pas vraiment un replace qui gère les String, mais un replace qui gère les expression régulières.

    D'ailleurs depuis JAVA 1.4, replace() fonctionne avec les CharSequence dont héritent String, StringBuffer et StringBuilder. Donc replace(".","-") devrait fonctionner aussi bien que replace('.','-') et il devraient remplacer tous les caractères, pas que le premier.

    Par contre replaceAll() attend une expression régulière et non pas un simple texte. En expression régulière le point signifie "n'importe quel caractère" donc replaceAll(".","-") remplacerait tous les caractères par des tirets. Si on veut utiliser le point il faut l'échapper avec un antislash dans une expression régulière et donc un double antislash entre les guillemets dans le code.

    Au final replace('.','-') ou replace(".","-") ou replaceAll("\\.","-") devaient tous fonctionner comme tu le souhaites. Si ça ne remplace pas touts les points par des tirets, l'erreur vient probablement d'ailleurs.

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rchaine = lchaine.replaceAll("\\.","-");
    et ça marche très bien ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Uther Voir le message
    Non! replaceAll() n'est pas vraiment un replace qui gère les String, mais un replace qui gère les expression régulières.
    Il n'en demeure pas moins que les arguments sont des String, même si le premier représente une expression régulière.
    Mais tu as raison sur un point, le replaceAll(".", "-") est nase, c'était bien replaceAll("\\.", "-")
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Oui pardon, j'ai modifié le code du post d'avant avec ce qui marche !!!

    Mais par contre j'ai essayé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rchaine = lchaine.replace(".","-");
    qui marche aussi sur toute la chaine lchaine

    et forcement dans le cas du même code avec replaceAll, un "." est considéré comme tous les caractères alors on obtient que des "-"
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

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


    replace(CharSequence, CharSequence) permet de remplacer une chaine par une autre, et replaceAll(String,String) permet cela en traitant l'interprétant comme une expression régulière.

    Autant utiliser la méthode la plus précisé selon ton besoin !

    replace(char, char) est à utiliser lorsqu'on veut remplacer toutes les occurences d'un caractère par un autre, donc ce code est parfait et correspond parfaitement à ton besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rchaine = lchaine.replace('.', '-');
    De plus c'est surement le plus performant (pas d'expression régulière, pas de gestion des déplacements dû à des tailles de chaines différentes...)



    a++

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bon déja merci pour vos réponse

    Alors dabord voici le code complet ca va peut etre vous aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    function veriftel(form1)
    {
     var lchaine = form1.telfixe.value
     if(lchaine.length==10)
     {
      var chaine1 = lchaine.substring(0,2);
      var chaine2 = lchaine.substring(2,4);
      var chaine3 = lchaine.substring(4,6);
      var chaine4 = lchaine.substring(6,8);
      var chaine5 = lchaine.substring(8,10);
      form1.telfixe.value = chaine1+"-"+chaine2+"-"+chaine3+"-"+chaine4+"-"+chaine5
     
     }
     else if(lchaine.length!=10 && lchaine.length!=14)
     {
      alert('Vérifier le numéro de téléphone');
      form1.telfixe.focus();
     }
     else if(lchaine.length==14)
     {
      rchaine = lchaine.replace('.','-');
      form1.telfixe.value = rchaine;
     }
     else
     {
      form.submit();
     }
    }
    avant de me jetter des cailloux ^^ je suis un débutant en java ok ^^

    Alors le but de la fonction et de vérifier un numéro de téléphone et de le formater au format que je désire 00-00-00-00-00.

    Je confirme que chez moi le replace ne remplace que le premier caractere de la chaine. et que le replaceall me mets une erreure.

    Est ce que cela peut venir de ma version de java sur le serveur?? j'utilise WAMP en version 2.0

    Merci pour vos réponses

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Sauf que là, c'est du javascript, pas du java !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ehh oui désolé mais j'ai précisé je suis débutant je voulais bien sur dire javascript

    Je vasi testé sur un autre poste pour etre sur que cela ne vient pas de mon poste

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    dans les regExp il y a de paramètres complémentaires ... quelque soit le langage d'ailleurs ...

    en l'occurrence c'est g pour chopper toutes les occurrences de la chaine
    ce qui donne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var reg=/\./g
    rchaine = lchaine.replace(reg,"-");

    dasn le même genre il y a :
    i pour insensible à la casse
    m pour multilignes
    s pour traiter le chaine comme une seule ligne
    x pour autoriser les commentaires et espaces dans le pattern
    U pour un pattern non capturant
    e pour evaluer le remplacement
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    En faisant quelques recherches, j'en suis arrivé à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var reg = new RegExp("[.]+", "g");
    value = value.replace(reg, "-");
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    oui les deux notations sont possibles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reg = new RegExp("[.]+", "g");
    ou
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    var reg = new RegExp("[.]+", "g");
    value = value.replace(reg, "-");


    Ca marche niquel ^^

    Merci beaucoup pour votre aide

  18. #18
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    [.] t'es sur ?

    [\.] plutot non ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Les deux marchent chez moi

  20. #20
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    . = n'importe quel caractère ...
    \. le point ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [DEBUTANT] Remplacer toutes les occurences de parenthèses
    Par rambc dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2010, 07h37
  2. Retrouver toutes les occurences dans un memo
    Par johweb dans le forum Delphi
    Réponses: 2
    Dernier message: 09/06/2006, 14h44
  3. connaitre toutes les occurences d'une chaine
    Par semaj_james dans le forum C
    Réponses: 2
    Dernier message: 11/12/2005, 14h46
  4. Borland C++ 5.5 remplacer toutes les occurences
    Par cdelamarre dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 30/11/2005, 12h23
  5. replace() qui s'applique sur toutes les occurences
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/03/2005, 11h27

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