[R] Extraire après le caractères

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

[R] Extraire après le caractères

#1

Message par Makadamm »

Bonsoir, je suis un peu novice en autoit et je n'arrive pas a extraire une chaine de caractère ...
Mon but étant de récupérer les 20 caractère après "FE00" situer aléatoirement dans ma chaine
J'ai besoin seulement de la parti a la fin de la chaine qui est derrière le dernier "FE00" : FE004E3137334647452D4C32310A2000C3
sachant que j'ai pas besoin de "FE00" ( qui sont les seul caractère récurent identique dans n’importe quel chaine , une sorte de séparateur ) Jai besoin de "4E3137334647452D4C32" et pas besoin de "310A2000C3"
Voici la chaine avec les valeurs inutilisable X puisque variable d'une chaine a l'autre :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFE00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFE00xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFE00xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Je pense devoir inverser ma chaine pour que le dernier FE00 devienne le 1er et prendre les 20 caractère devant FE00 puis inverser les caractères

Code : Tout sélectionner

$123 = "0x00FFFFFFFFFFFF000DAF21170000000005130103802716780A06359E56529829145054000000010101010101010101010101010101012F2640A060841A30302035007ED710000018000000FE004E3137334647452D4C32310A20000000FE00434D4F0A202020202020202020000000FE004E3137334647452D4C32310A2000C3"
$456 = StringReverse($123)
$789 = StringSplit($456,"FE00", 20)
$abc = StringReverse($789)
MsgBox(64, "", $abc)
 
Bref l'aide avec f1 de m'aide pas, et google aprés 2h de recherche me donne une partielle solution en quittant autoit et passé par du bat avec FOR /F "tokens=2 delims=FE00".... Bref j'ai besoin d'aide s.v.p....
Modifié en dernier par Makadamm le jeu. 07 janv. 2016 15:21, modifié 4 fois.
Vilain
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mar. 29 déc. 2015 11:52
Status : Hors ligne

Re: [..] Extraire après le caractères

#2

Message par Vilain »

Je sais se que tu veut faire :P
Tu cherche compliqué , puis il es vrai que autoit n'est pas vraiment le langage approprié :idea:
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

Re: [..] Extraire après le caractères

#3

Message par Makadamm »

Ok, mais aurais tu par hasard la solution, ou à défaut la route qui après réflexion me mènera a mon but stp?
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Extraire après le caractères

#4

Message par walkson »

bonjour,
Peut être comme ceci ?

Code : Tout sélectionner

$chaine = "0x00FFFFFFFFFFFF000DAF21170000000005130103802716780A06359E56529829145054000000010101010101010101010101010101012F2640A060841A30302035007ED710000018000000FE004E3137334647452D4C32310A20000000FE00434D4F0A202020202020202020000000FE004E3137334647452D4C32310A2000C3"
$place = StringInStr($chaine, "FE00",1)
MsgBox(0,"",$place)
$mid = StringMid($chaine,$place,24)
MsgBox(0,"",$mid)
$resul = StringTrimLeft($mid,4)
MsgBox(0,"",$resul)
La méthode est assez classique. Il y a des spécialistes du "StringRegExp" qui pourraient avoir une réponse plus simple.
@vilain, si Autoit n'est pas le langage approprié pour extraire des caractères à votre avis, je vous invite à consulter string management dans l'aide...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Extraire après le caractères

#5

Message par orax »

Si c'est juste le dernier (affiché en vert sur https://regex101.com/r/aJ9sH9/1) :

Code : Tout sélectionner

$chaine = "0x00FFFFFFFFFFFF000DAF21170000000005130103802716780A06359E56529829145054000000010101010101010101010101010101012F2640A060841A30302035007ED710000018000000FE004E3137334647452D4C32310A20000000FE00434D4F0A202020202020202020000000FE004E3137334647452D4C32310A2000C3"
$resul = StringRegExpReplace($chaine, "(?i).+FE00(.{20}).+", "\1")
MsgBox(0, "", $resul)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

Re: [R] Extraire après le caractères

#6

Message par Makadamm »

Bonjour et merci a walkson pour sa recherche, et merci a orax pour la solution, ça fonctionne nikel !!!
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [R] Extraire après le caractères

#7

Message par orax »

En mettant un -1 dans le code de walkson, ça pouvait aussi trouver la dernière occurrence (celle à droite).

Code : Tout sélectionner

$place = StringInStr($chaine, "FE00", 1, [color=#FF0000]-1[/color])
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

Re: [..] Extraire après le caractères

#8

Message par Makadamm »

Le -1 attaque direct par la fin c'est bien ça?

Orax sur le lien https://regex101.com/r/aJ9sH9/1 en vert c’est bien la valeur que je veut,

petit soucie, après avoir tester sur plusieurs system, ma chaine est identique en longueur,
le résultat est toujours situer a l'endroit en vert
mais FE00 est sorti 2 fois en FF00 et 6 fois en FD00 du-coup ça va pas
a la sorti j'ai plus le résultat en vert mais toute ma chaine.

Il faudrait donc prendre les caractères 228 a 248

EDIT 1 :

j'ai trouver !!!

Code : Tout sélectionner

$789 = StringMid($123, 229, 20)
 
Me reste a traduire le résultat...

J'ai donc 4E3137334647452D4C32 et je doit obtenir N173FGE-L2 , une idée?

EDIT 2 :

Je dois traduire du hex en ascii a se que je vois sur google...

EDIT 3 :

J'ai trouver !

Code : Tout sélectionner

#include <String.au3>
$456 = StringMid($123, 229, 20)
$789 = _HexToString($456)
msgbox(64, "", $789)
 
Makadamm
Niveau 1
Niveau 1
Messages : 7
Enregistré le : jeu. 07 janv. 2016 00:50
Status : Hors ligne

Re: [R] Extraire après le caractères

#9

Message par Makadamm »

Un grand merci à Walkson et Orax.
Répondre