Page 1 sur 1
[R] Connaitre la position d'un chiffre dans une chaine
Posté : jeu. 11 févr. 2010 11:40
par GhostLine
Salut à tous,
je suis bien embêté

j'essaye désespérément de trouver une solution au problème suivant : dans une ligne de texte, du type
T04_ENSEIGNE:nNN0.60=MAGASIN TOULOUSE 31 TOULOUSE
je cherche à définir la position du premier chiffre (après le char = ), afin de mettre MAGASIN TOULOUSE dans une variable, et 31 TOULOUSE dans une autre. Pour mémoire, je ne peux pas utiliser Stringleft ou Stringright, car le nombre d'espaces entre les deux "blocs" varie.
Re: [..] Connaitre la position d'un chiffre dans une chaine
Posté : jeu. 11 févr. 2010 12:54
par Serge63
bonjour
je viens de faire ça vite fait, mais il y a peut etre plus simple :
► Afficher le texte
Code : Tout sélectionner
#include <String.au3>
#include <Array.au3>
$machaine = "T04_ENSEIGNE:nNN0.60=MAGASIN TOULOUSE 31 TOULOUSE"
$decompose = _StringExplode($machaine, "=")
$champ = $decompose[1];
$longueur = StringLen($champ)
For $ctr = 1 To $longueur
If StringIsInt(StringMid($champ, $ctr, 1)) Then ExitLoop
Next
Msgbox(0,'Resultat', 'position du premier chiffre = ' & $ctr)
Re: [..] Connaitre la position d'un chiffre dans une chaine
Posté : jeu. 11 févr. 2010 13:15
par jordane45
Bonjour,
Je ne suis pas expert dans AutoIt (je commence tout juste).
Je te propose le code suivant :
► Afficher le texte
Code : Tout sélectionner
dim $Mavariable = "T04_ENSEIGNE:nNN0.60=MAGASIN TOULOUSE 31 TOULOUSE "
dim $posNum = 0
dim $variableTest
dim $isnum
dim $posNum
dim $posDernierNum
$posEgal = StringInStr($Mavariable,"=")
$reste = StringMid($Mavariable,$posEgal+1,StringLen($Mavariable)-$posEgal)
$nbcar = StringLen($reste)
for $L = 1 to $nbcar
$variableTest = StringMid($reste,$L,1)
$isnum = StringIsInt($variableTest)
if ($posNum > 0 )Then
if ($isnum > 0) Then
$posDernierNum = $L
EndIf
Else
if ($isnum > 0) Then
$posNum = $L
EndIf
EndIf
;MsgBox(0,"test",$variableTest & @CRLF & $isnum & @CRLF & $posNum & @CRLF & $posDernierNum)
Next
$Textevoulu = StringLeft($reste,$posNum-1)
$Chiffre = StringMid($reste,$posNum,$posDernierNum-$posNum+1)
msgbox(0,"Resultat", "le texte est : " & $Textevoulu & @CRLF & "le chiffre est : " & $Chiffre)
Je suppose que d'autres personnes pourrons surement donner une autre façon de faire (peut être plus simple) mais c'est déjà un début de réponse.
Bonne journée.
Jordane
Re: [..] Connaitre la position d'un chiffre dans une chaine
Posté : jeu. 11 févr. 2010 22:25
par Tlem
L'utilisation d'expression(s) régulière(s) serait sans doute plus simple.
Edit :
Code : Tout sélectionner
$String = "T04_ENSEIGNE:nNN0.60=MAGASIN TOULOUSE 31 TOULOUSE"
$String = StringRegExpReplace($String, "(.*?=)", "")
$Var1 = StringRegExpReplace($String, "(\d.*)", "")
$Var2 = StringReplace($String, $Var1, "")
MsgBox(0, '', '$Var1 = ' & $Var1 & @CRLF & '$Var2 = ' & $Var2)
Re: [..] Connaitre la position d'un chiffre dans une chaine
Posté : ven. 12 févr. 2010 09:22
par GhostLine
Merci tlem ! Ta solution marche nickel ^^
Merci à tous les autres aussi, bien sûr

pour mémoire, Serge, ton code fonctionne correctement, mais uniquement une fois (pour une raison que je n'ai pas réussi à déterminer).
Re: [R] Connaitre la position d'un chiffre dans une chaine
Posté : ven. 12 févr. 2010 12:30
par Serge63
tu bosses sur quoi ? un fichier texte ?
si tu veux, envoies le moi pour que je fasse un test