[..] Remplacer des caractères

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
moustache
Status : Hors ligne

[..] Remplacer des caractères

#1

Message par moustache »

Bonjour, je cherche déjà depuis plus de 3 jours un moyen avec antoit pour détecter et remplacer un caractère par un autre, mais je ne trouve pas la fonction qui me perpétrai de faire sa.

Comment puis-je faire sa ?

Merci de me répondre.

Cordialement,
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Remplacer des caractères

#2

Message par bloodwolff »

Cela dépend d'où sont situé les caractère mais si le texte est dans une chaine de caractère
$nouvelle_chaine = StringReplace ( $chaine_initiale , "Le caractère à remplacer", "Ce par quoi il est remplacé")
Lis la documentation sur la fonction si tu veux plus de détails
Compte skype : bloodwolfff
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#3

Message par moustache »

Merci de ta réponse bloodwolff, sa fonctionne cependant quelque problème persiste. Dans la documentation de la fonction il dise que pour que tout les caractères soit reconnu, il faut mètre la valeur 0. La valeur par default est 0, mais tout les caractères ne ce font pas. Pour être sur que tout les caractère ne ce remplace, je doit mètre une valeur du count de 30 sachant que ma chêne ne comporte que 10 caractère, je suis donc sur que tout les caractère ce feront. Si je mes 0 ou rien il y a selon la chêne des espace au milieux alors qu’il ne devrai pas y être. Sa c’étai pour le petit problème, L’autre problème plus gênant se situ au niveau d’un caractère inconnu qui est :

Image

Sa ces le caractère que le bloc note de Windows m’affiche, mais l’éditeur Autoit lui m’affichera un « ? ».

Je récupère ma chêne à partir du presse papier. Le presse papier luis est gênerai par un autre logicielle.

Bref comment je dis à Autoit de remplacer les caractères inconnu par le caractère que je veux, voir même de le supprimé ?
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [..] Remplacer des caractères

#4

Message par bloodwolff »

pour le premier problème , il serait bien d'avoir un exemple de chaine et pour le second je ne sait pas comme sa mais je chercherai peut-être plus tard ce soir
Compte skype : bloodwolfff
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Remplacer des caractères

#5

Message par sylvanie »

Stringreplace n'est entravé par les espaces, mais plutôt par les caractères Ascii nommés "invisibles" qui sont interprétés.
en supposant que $text soit votre texte non traîté, le code suivant :

Code : Tout sélectionner

$text=StringRegExpReplace($text,"[\x00-\x09]","")
$text=StringRegExpReplace($text,"[\x0B-\x0C]","")
$text=StringRegExpReplace($text,"[\x0E-\x1F]","")
$text=StringRegExpReplace($text,"[\x7F-\xFF]","")
 
va supprimer les caractères 0x00 à 0x09 puis 0x0B à 0X0C puis 0x0E à 0X1F : ceci préserve les retours chariots (0x0D 0x0A) en éliminant les autres "embêtant"
La dernière ligne est un peut extrêmiste car on balaye une plage contenant certains caractères étendus qui pourrait peut être vous intéresser. Localisez les (via un éditeur hexadécimal et non notepad, pspad par exple) pour crééer des exceptions comme celles faites pour 0x0D et 0x0A
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#6

Message par moustache »

Merci de ta réponse sylvanie, mais comment fait tu pour savoir le code hexadécimale d’un caractère avec PSPad ?
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Remplacer des caractères

#7

Message par jchd »

Avec le mode Hexa de PsPad, c'est une de ses forces !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#8

Message par moustache »

Merci de ta réponsse Jchd, mais je ne commprand pas ou on selectionne ce mode hexa ?
J'ouvre pspad, je colle mon caractère dans l'éditeur et je fait quoi enssuite ?
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#9

Message par moustache »

A prés mainte recherche. Je penses connaitre ce fameux caractère inconnu. Mais impossible de savoir sont code hexadécimale avec pspad, finalement je les comparé dans une table de caractère. Le code hexadécimal semble être : B7. Bien que je n’en suis pas sur.

Voici un extraie de ce que me donne pspad. J’ai encadré en rouge le fameux caractère.

Image

Malgré cela le caractère ne ce supprime pas.

Voici mon code qui remplace les caractères.

Code : Tout sélectionner

$chaine=clipget()
$nouvelle_chaine=stringreplace($chaine," ","")
$nouvelle_chaine=stringreplace($chaine,"  ","")
$nouvelle_chaine=stringreplace($chaine,"   ","")
$nouvelle_chaine=stringreplace($chaine,"    ","")
$nouvelle_chaine=stringreplace($chaine,"     ","")
$nouvelle_chaine=stringreplace($chaine,"b","8")
$nouvelle_chaine=stringreplace($chaine,"a","8")
$nouvelle_chaine=stringreplace($chaine,"l","1")
$nouvelle_chaine=stringreplace($chaine,"i","1")
$nouvelle_chaine=stringreplace($chaine,"& ~","7")
$nouvelle_chaine=stringreplace($chaine,"[B7]","")
Commant résoudre ce problèmme ?
Modifié en dernier par moustache le lun. 08 nov. 2010 16:42, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Remplacer des caractères

#10

Message par jchd »

moustache a écrit :Merci de ta réponsse Jchd, mais je ne commprand pas ou on selectionne ce mode hexa ?
J'ouvre pspad, je colle mon caractère dans l'éditeur et je fait quoi enssuite ?
Bah : Affichage > Editeur Hexadécimal

Ou bien encore : clic droit sur le ficher texte dans l'explorateur et sélection de PsPad > PsPad Hex
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#11

Message par moustache »

Merci de ta réponse jchd, mais j'avais déjà essayé ceci. J’obtiens le code 3F et en prenant un caractère Arabe ou Russe au hazar qui n’est pas dans l’écriture latin, j’obtiens aussi 3F.

Mais que je mette B7 ou 3F le caractère ne s’enlève pas.

Ou est le problème ?
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Remplacer des caractères

#12

Message par sylvanie »

Bonsoir,
Dans l'absolu, il suffirai de le remplacer par rien : ""
Par contre ce qui me chiffone, c'est que 3F correspond au caractère "?" qui est imprimable, alors que B7 ne fait pas partie des caractères "classiquement" imprimables.

Sinon, en regardant le morceau de code fourni :

Code : Tout sélectionner

$nouvelle_chaine=stringreplace($chaine,"[B7]","")
 


çà ne marche pas comme ça, car ceci va vraiment cibler la chaîne [B7] et non le caractère 0xB7
pour remplacer le caractère 0xB7, il faut passer par stringregexpreplace($chaine,"[\xb7]","")
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#13

Message par moustache »

Merci de ta réponse sylvanie, mais sa ne fonctionne toujours pas. Je ne sais pas d’où viens le problème mais je pense que sa viendrais caractère car je viens de me rendre compte qu’en faite aucun caractère ne fonctionne vraiment j’ai l’impression.

Voici mon code Autoit. J’ai même enlevé mon code suivant pour le remplacé par un msgbox pour être sur du résultat.

Code : Tout sélectionner

$chaine=clipget()
$nouvelle_chaine=stringregexpreplace($chaine,"[\xb7]","")
$nouvelle_chaine=stringreplace($chaine,"b","8")
$nouvelle_chaine=stringreplace($chaine,"B","8")
$nouvelle_chaine=stringreplace($chaine,"a","8")
$nouvelle_chaine=stringreplace($chaine,"A","8")
$nouvelle_chaine=stringreplace($chaine,"ô","8")
$nouvelle_chaine=stringreplace($chaine,"(':","8")
$nouvelle_chaine=stringreplace($chaine,"l","1")
$nouvelle_chaine=stringreplace($chaine,"L","1")
$nouvelle_chaine=stringreplace($chaine,"i","1")
$nouvelle_chaine=stringreplace($chaine,"I","1")
$nouvelle_chaine=stringreplace($chaine,"& ~","7") 
$nouvelle_chaine=stringreplace($chaine,"(':l)","0")
$nouvelle_chaine=stringreplace($chaine," ","")
$nouvelle_chaine=stringreplace($chaine,"  ","")
$nouvelle_chaine=stringreplace($chaine,"   ","")
$nouvelle_chaine=stringreplace($chaine,"    ","")
$nouvelle_chaine=stringreplace($chaine,"     ","")
MsgBox(0,"resultat",$nouvelle_chaine)
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Remplacer des caractères

#14

Message par jchd »

Au vu de ton code, seul le dernier remplacement est effectif !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Remplacer des caractères

#15

Message par timmalos »

En effet, quelque chose m'a choqué à la lecture de ce sujet mais jchd vient de vous le reveler:
Faites attention a vos variables $chaine et ^$nouvelle chaine, la vous creez une nouvelle chaine mais vous n'en faites rien, donc seule la derniere ligne fait vraiment quelque chose ici.
Faites en Ctrl+H et remplacez ^$nouvelle_chaine par $chaine et ce problème sera déjà reglé.
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#16

Message par moustache »

Merci de vos réponses. Apres plus d’une heur de test je pense que pour les caractère c’est bon.
Mais je bloque encore sur ce fameux caractère spécial.

Comment résoudre ce problème ?

Voici mon code.

Code : Tout sélectionner

$chaine=clipget()
$chaine=stringregexpreplace($chaine,"[\xb7]","")
$chaine=stringreplace($chaine,"(':l)","0")
$chaine=stringreplace($chaine,"(':l","0")
$chaine=stringreplace($chaine,"(':","8")
$chaine=stringreplace($chaine,"~","7")  
$chaine=stringreplace($chaine,"b","8")
$chaine=stringreplace($chaine,"B","8")
$chaine=stringreplace($chaine,"A","8")
$chaine=stringreplace($chaine,"D","8")
$chaine=stringreplace($chaine,"ô","8")
$chaine=stringreplace($chaine,"s","5")
$chaine=stringreplace($chaine,"S","5")
$chaine=stringreplace($chaine,"&","5")
$chaine=stringreplace($chaine,"a","3")
$chaine=stringreplace($chaine,"l","1")
$chaine=stringreplace($chaine,"L","1")
$chaine=stringreplace($chaine,"i","1")
$chaine=stringreplace($chaine,"I","1")
$chaine=stringreplace($chaine,"U","48")
$chaine=stringreplace($chaine," ","")
$chaine=stringreplace($chaine,"  ","")
$chaine=stringreplace($chaine,"   ","")
$chaine=stringreplace($chaine,"    ","")
$chaine=stringreplace($chaine,"     ","")
ClipPut($chaine)
MsgBox(0,"resultat",$chaine)
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [..] Remplacer des caractères

#17

Message par Jerome »

Coucou,

A tout hasard ?


Code : Tout sélectionner

$chaine=clipget()
$chaine=stringregexpreplace($chaine,"(?:\xB7|\.)","")
$chaine=stringreplace($chaine,"(':l)","0")
$chaine=stringreplace($chaine,"(':l","0")
$chaine=stringreplace($chaine,"(':","8")
$chaine=stringreplace($chaine,"~","7")  
$chaine=stringreplace($chaine,"b","8")
$chaine=stringreplace($chaine,"B","8")
$chaine=stringreplace($chaine,"A","8")
$chaine=stringreplace($chaine,"D","8")
$chaine=stringreplace($chaine,"ô","8")
$chaine=stringreplace($chaine,"s","5")
$chaine=stringreplace($chaine,"S","5")
$chaine=stringreplace($chaine,"&","5")
$chaine=stringreplace($chaine,"a","3")
$chaine=stringreplace($chaine,"l","1")
$chaine=stringreplace($chaine,"L","1")
$chaine=stringreplace($chaine,"i","1")
$chaine=stringreplace($chaine,"I","1")
$chaine=stringreplace($chaine,"U","48")
$chaine=stringreplace($chaine," ","")
$chaine=stringreplace($chaine,"  ","")
$chaine=stringreplace($chaine,"   ","")
$chaine=stringreplace($chaine,"    ","")
$chaine=stringreplace($chaine,"     ","")
ClipPut($chaine)
MsgBox(0,"resultat",$chaine)
Tirer de cette page et de celle-ci, dsl je sait pas trop trop si sa fonctionne comme sa ^^".





Jérôme
moustache
Status : Hors ligne

Re: [..] Remplacer des caractères

#18

Message par moustache »

Merci de ta réponsse Jerome, j'ai éssayé ton code mais sa ne fonctionne toujours pas.
Répondre