Partage
  • Partager sur Facebook
  • Partager sur Twitter

remplacer une ligne precise

Sujet résolu
    6 août 2009 à 1:08:41

    Hello les zéros, c'est encore moi !

    j'ai une petite ligne:
    sMessage = sMessage.replace(/\b#.*\n\b/,"[c=3]#.*\n[/c]");
    


    je veux donc remplacer:

    Citation

    # mon petit commentaire


    par

    Citation

    # mon petit commentaire



    je crois avoir pourtant une bonne syntaxe de mon code ...

    De l'aide svp :D

    ( je souhaite remplacer un ligne commençant par un # par la même ligne colorée en vert).



    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 août 2009 à 1:21:50

      t'es pas loin a 3km près :p

      il te manque le $1 quelque part déjà… et tu peux profiter du mode multi-ligne des regex js pour simplifier tout ça :

      taChaine.replace(/^(#.*)$/m,"[c=3]$1[/c]");
      
      • Partager sur Facebook
      • Partager sur Twitter
        6 août 2009 à 1:25:55

        Effectivement je pourrais utiliser le g !
        Mais j'en suis pas encore la !

        si je fait:

        Citation

        #test
        test


        j'obtient

        Citation

        #test
        test


        donc ce n'est pas encore ça :euh:

        edit: de plus a quoi sert le m car ici:
        http://www.commentcamarche.net/content [...] jsregexp.php3
        dans le tableau des charactères spéciaux je ne vois pas le m :D
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 août 2009 à 1:44:38

          Putain de connection de merde qui a bouffé mon post.

          "fqmlsdf\n#salut\nplop".replace(/^(#.*)$/m,"[c=3]$1[/c]");
          


          "fqmlsdf
          [c=3]#salut[/c]
          plop"


          Ton problème est ailleurs.

          "m" n'est pas un cara spécial, c'est un paramètre.

          le "g", rien à voir.

          MDC une vraie ressource à jour sur le javascript…
          https://developer.mozilla.org/en/Core_ [...] bjects/RegExp

          • Partager sur Facebook
          • Partager sur Twitter
            6 août 2009 à 1:59:21

            test = "fqmlsdf\n#salut\nplop"
            test.replace(/^(#.*)$/m,"[c=3]$1[/c]");
            Debug.Trace(test)
            


            m'affiche
            fqmlsdf
            #salut
            plop


            peut être aurais-je du le dire avant mais je ne développe pas pour le web mais un script Messenger plus.
            C'est donc du Jscript, mais quasiment toutes les syntaxes javascript marche dedans pourtant
            comme:
            sMessage = sMessage.replace(/\balias\b/g,"[c=12]alias[/c]");
            

            par exemple.

            De plus dans ma String sMessage, je n'ai pas de caractère \n !!!
            Donc ta ligne permet t'elle de détecter qu'il va y avoir un saut de ligne donc s'arrêter de colorer a la fin de la ligne ?


            EDIT:
            si je rentre ça dans msn, je cherche a ce qu'il le colore:
            # run_able?
            # end_battle_victory
            #------------------------------------------------------------  
            class Battle_Core
                 attr_accessor :z_level
                 attr_accessor :actor_status

            Pour le moment j'arrive a faire:

            Citation


            # run_able?
            # end_battle_victory
            #------------------------------------------------------------
            class Battle_Core
            attr_accessor :z_level
            attr_accessor :actor_status


            grâce à
            sMessage = sMessage.replace(/\bclass\b/g,"[c=12]class[/c]");
            
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 août 2009 à 2:04:15

              oui enfin faut pas oublier son cerveau a l'entrée non plus :p J'ai juste affiché le truc, je l'ai pas mis dans une variable.


              test = test.replace(/^(#.*)$/m,"[c=3]$1[/c]");


              Les problèmes de compatibilité c'est pas vraiment sur les regex le problème ;)
              • Partager sur Facebook
              • Partager sur Twitter
                6 août 2009 à 2:09:23

                Je suis pas fou portant !
                si je rentre sur msn (en collant du texte d'un script ruby):
                #test
                test
                ça me colorit les deux ligne alors que la deuxième il devrai pas y toucher :(

                ps: effectivement la MDC est bien remplis ! hop dans les favoris :D
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  6 août 2009 à 2:13:21

                  bah je sais pas alors. J'ai pas windows, j'ai pas msn et je cautionne pas ^^

                  Peu etre t'aura plus de chance avec quelqu'un d'autre, mais moi je peux plus faire grand chose :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 août 2009 à 2:19:13

                    En tout cas merci pour le liens de la MDC

                    EDIT:
                    J'ai trouvé une solution parallèle, mais qui ne remplie pas vraiment le rôle que je veux car ça m'oblige a avoir un # au début et un autre # a la fin de mes commentaires, hors, personne ne fait ça ...
                    var com = new Array()
                    		for (i = 0; i < sMessage.length+1; i++){
                    			if(sMessage.charAt(i)=="#"){
                    				for (j = i+1; j < sMessage.length+1; j++){
                    					if(sMessage.charAt(j)=="#"){
                    						com[i] = sMessage.substring(i, j+1)
                    						sMessage = sMessage.replace(com[i],"[c=3]"+com[i]+"[/c]");
                    						break
                    					}
                    				}
                    				i = j+9
                    			}
                    		}
                    


                    si quelqu'un a une idée pour optimiser la ligne:
                    if(sMessage.charAt(j)=="#"){
                    

                    en remplaçant le "#" pour trouver un saut de ligne, ou encore mieux trouver une solution à ce qu'a commencée par nod_
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 août 2009 à 3:32:56

                      Peut-être qu'MSN ne gère pas le flag "m" ? Auquel cas tu pourrais essayer un truc de ce genre ?

                      .replace(/(^|\n)(#.*)($|\n)/g,"$1[c=3]$2[/c]$3")
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 août 2009 à 13:20:18

                        J'obtiens comme avant:

                        Citation


                        #test
                        test



                        Alors que j'ai écrit dans msn:
                        #test (ici maj + entrée me fait saute un ligne sans envoyer le message)
                        test
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 août 2009 à 13:28:33

                          Bon... :euh:

                          Peut-être une histoire de \n \r et compagnie ?

                          Essaie ça :

                          .replace(/(^|\n|\r)(#.*)($|\n|\r)/g,"$1[c=3]$2[/c]$3")
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 août 2009 à 16:49:39

                            Bon bah là je sèche perso... Si quelqu'un veut se lancer, ne pas hésiter. ^^

                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 août 2009 à 17:48:45

                              c'est vraiment embêtant ...
                              quand il ont créé javascript ils ont pas pensé qu'un MOI j'aurais besoin de détecter quand y'a un saut de lignes ^^ ?!

                              EDIT:
                              J'ai trouvé ! je n'utilise pas \m ni \n mais \r !!!
                              String = String.replace(/(#.*\r)/,"[c=3]$1[/c]");
                              


                              Citation : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/RegExp

                              \r =>

                              Matches a carriage return.



                              EDIT:
                              arg ma joie fut de courte durée ...
                              quand je fait:

                              Citation


                              #test
                              test
                              #test



                              j'obtient:

                              Citation


                              #test
                              test
                              #test

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                6 août 2009 à 18:27:43

                                remplace .* par [^\r]+

                                histoire de.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  6 août 2009 à 18:42:40

                                  apparament
                                  sMessage = sMessage.replace(/(#[^\r]*)/g,"[c=3]$1[/c]");
                                  

                                  en écrivant

                                  Citation


                                  #test
                                  test
                                  #test


                                  me renvois bien

                                  Citation


                                  #test
                                  test
                                  #test



                                  je met le sujet en résolu (tant que ça marche :D)

                                  Un grand merci a tous :D
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  remplacer une ligne precise

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown