[..] Remplacer des caractères
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
moustache
- Status : Hors ligne
[..] Remplacer des caractères
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,
Comment puis-je faire sa ?
Merci de me répondre.
Cordialement,
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..] Remplacer des caractères
Cela dépend d'où sont situé les caractère mais si le texte est dans une chaine de caractère
Lis la documentation sur la fonction si tu veux plus de détails$nouvelle_chaine = StringReplace ( $chaine_initiale , "Le caractère à remplacer", "Ce par quoi il est remplacé")
Compte skype : bloodwolfff
-
moustache
- Status : Hors ligne
Re: [..] Remplacer des caractères
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 :

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é ?

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é ?
- bloodwolff
- Membre émérite

- Messages : 655
- Enregistré le : ven. 18 avr. 2008 22:36
- Localisation : Québec
- Status : Hors ligne
Re: [..] Remplacer des caractères
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
- sylvanie
- Niveau 11

- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Remplacer des caractères
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 :
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
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]","")
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
Merci de ta réponse sylvanie, mais comment fait tu pour savoir le code hexadécimale d’un caractère avec PSPad ?
- jchd
- 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
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
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 ?
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
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.

Malgré cela le caractère ne ce supprime pas.
Voici mon code qui remplace les caractères.
Commant résoudre ce problèmme ?
Voici un extraie de ce que me donne pspad. J’ai encadré en rouge le fameux caractère.

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]","")
Modifié en dernier par moustache le lun. 08 nov. 2010 16:42, modifié 1 fois.
- jchd
- 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
Bah : Affichage > Editeur Hexadécimalmoustache 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 ?
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
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 ?
Mais que je mette B7 ou 3F le caractère ne s’enlève pas.
Ou est le problème ?
- sylvanie
- Niveau 11

- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Remplacer des caractères
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 :
çà 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]","")
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
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.
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)- jchd
- 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
Au vu de ton code, seul le dernier remplacement est effectif !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [..] Remplacer des caractères
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é.
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
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.
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)- Jerome
- Niveau 9

- Messages : 661
- Enregistré le : mar. 07 avr. 2009 08:35
- Localisation : Picardie
- Status : Hors ligne
Re: [..] Remplacer des caractères
Coucou,
A tout hasard ?
Tirer de cette page et de celle-ci, dsl je sait pas trop trop si sa fonctionne comme sa ^^".
Jérôme
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)Jérôme
-
moustache
- Status : Hors ligne
Re: [..] Remplacer des caractères
Merci de ta réponsse Jerome, j'ai éssayé ton code mais sa ne fonctionne toujours pas.
