Isoler les codes couleurs

cs_mirroir Messages postés 4 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007 - 20 sept. 2007 à 18:43
cs_mirroir Messages postés 4 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007 - 21 sept. 2007 à 23:44
Bonjour, je suis débutant en scripting et j'ai besoin d'aide. Je désir récuperer sur un " on^*:text: " les codes couleurs et gras des tchatteurs qui écrivent afin de les isoler dans une variable ( que j'utiliserai ensuite à ma guise). Le soucis c'est que les codes sont envoyés de différente maniere "ctrl+k00,1ctrt+b"  ou alors "ctrl+b ctrl+k01,2" etc etc. Etant débutant, je ne sais manipuler les tokens ou les regex comme il se doit pour arriver à isoler ces multitudes de possbilités. Mon but et d'agir comme un miroir... On me parle avec une couleur... Et je répond avec la même couleur...
Merci de votre aide si quelqu'un se lance un tel défi.

Cordialement,

9 réponses

cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
20 sept. 2007 à 21:27
Bonjour,

en effet si tu n'as pas l'habitude des regex (les tokens oublies ca à mon avis dans ce contexte), ca peut etre compliké. Toutefois dans le cadre de code couleur simple (pas de trucs avec tout l'arc en ciel en permanence partout dans le texte) ca peut etre fais simplement. Je m'explique :
- on part du postulat que c'est un code couleur simple, ainsi il nest présent qu'au début du texte.

ainsi dés qu'on t'envoi du texte tu fais une boucle sur les premiers caracteres du texte :
-à chaque fois que le caractere = ctrl+b tu passes au suivant
-à chaque fois que le caractere = ctrl+k ou que le caractere est un chiffre ou une virgule faisant suite au ctrl+k sans qu'il y ai eu d'espace tu passes au suivant
et donc dés que tu rencontre un caractere qui est autre que ctrl+b ou ctrl+k suivit de chifre pouvant etre séparé d'une virgule tu sais que tu es de plein pied dans le texte. ainsi tu stock les caractere antérieurs dans une variable que tu mets au debut du texte que tu veux envoyer pour garder le mm code couleur.

sur le principe ce system devrait marché je pense mais bon faut tester, en tout cas ca peut toujours etre une amorce d'idée. pour t'aider tu auras besoin des elements suivants je pense :
- while
- $mid
- $chr

ISoKa
0
cs_mirroir Messages postés 4 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007
20 sept. 2007 à 21:41
Je te remercis pour cette première réponse. C'est vrai qu'a force de chercher chercher...J'en ai perdu au fil fu temps la ligne de conduite directrice que je dois me tenir pour arriver à mon projet ( detecter les codes couleurs ) Donc ton rappel mais aussi la structure que je dois donner à la boucle est le bien venu, merci.
0
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
20 sept. 2007 à 21:47
je vien de penser à un truc trés con qi serai encore plus simple peut etre. tu prend ton texte $1- que tu strip. une fois striper tu prend le premier mot $gettok($strip($1-),1,32) que tu stock on va dire dans une variable %j. ainsi tu cherche dans le texte non stripé la premiere occurence de %j ainsi tout ce qui sera avant %j sera le code couleur.

ISoKa
0
LuckyFranck Messages postés 4 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 20 septembre 2007
20 sept. 2007 à 22:06
Voici un pattern regex récupérant la mise en forme au début du texte : ^((?:(?:\x03\d?\d(?:\x2C\d?\d)?)|[[:cntrl:]])+)
on récupère cette mise en forme dans $regml(1)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mirroir Messages postés 4 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007
21 sept. 2007 à 08:56
Merci à tous les deux, le pattern de luckyfranck m'a permis d'arrivé à ce que je voulais. Cela dis je ne pense pas que je serais arrivé à coder ça tout seul, merci.
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
21 sept. 2007 à 20:51
euh... je fais pu trop de mIRC, mais un simple regex avec le chr 'ctrl+b' n'aurait-il pas suffit ?
genre $regex($1-,/^chr/) ? mais en fait, je me rends compte que ca serait sans doute plus long :x
0
cs_ISoKa Messages postés 435 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 17 octobre 2008
21 sept. 2007 à 22:29
non ca passe pas pck tu peux avoir ctrl+b puis ctrl+k suivit du code couleur ou l'inverse pit tu peux aussi avoir le souligné qui vien fin bref ca fai plusieurs permutations possible avec ou sans presence de chacun des elements.

ISoKa
0
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
21 sept. 2007 à 22:34
bah il peut faire d'une facon générale avec $regex($1-,/^(chr1|chr2|etc)/)
donc ca c'était pour te répondre, mais sinon je sais bien que l'autre est mieux, donc je n'insiste plus.
0
cs_mirroir Messages postés 4 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007
21 sept. 2007 à 23:44
Tout vos commentaire sont quoi qu'il en soit positif, certes le résultas que je voulais je l'obtient grace au pattern posté par luckyfranck mais, tout ce que vous avez posté me servira aussi, d'exemple "concret" afin que je puisse progresser dans la compréhension des diverses outils ( regex,boucle,hashtable etc etc ). Merci
0
Rejoignez-nous