Page 1 sur 3

[..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 10:14
par killgones
bonjour,

je suis en train de créé un programme qui me génère automatiquement une signature mail au sein de mon entreprise.
cependant, étant novice en autoit je coince sur le faite que je dois récupérer une chaine de caractère spécifique, des chiffres qui correspondent au numéro de téléphone, pour ce faire je voudrais juste récupérer les chiffres en supprimant les éventuels points, espaces ou tout autres signes ajoutés par utilisateurs.

voila mon code actuel
► Afficher le texte
merci pour votre aide.

Cordialement.

Re: [..]Fonction StringRegexp

Posté : mar. 28 oct. 2014 10:27
par mikell
S'il s'agit juste de ne garder d'une string que les chiffres qu'elle contient, tu peux faire ça :

Code : Tout sélectionner

$res = StringRegExpReplace($string, '\D', "")

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 10:31
par killgones
enfaite je souhaite garder uniquement les 9 derniers chiffre pour les variables Num_Tel_Fixe, Num_Mobile, et Num_Fax en retirant les "-" "." ou espace

merci de ta réponse

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 10:55
par killgones
Comment je l’intègre à mon code ?
directement après les GUI ?

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 11:17
par jbnh
Vous le remplacez un peu ou vous le souhaitez, c'est juste une manipulation de chaîne à l'instar de $szText = StringReplace($szText, "Num_Fax", $Num_Fax_html)

Vous pouvez par exemple faire

Code : Tout sélectionner

$Num_Fax_html = GUICtrlRead($Num_Fax)
$Num_Fax_html = StringRegExpReplace($Num_Fax_html, '\D', "")
Après je ne connais pas le fonctionnement de votre script. SI vous souhaitez également récupérer qu'une partie d'un string qui est le numéro etc, je vous invite à regarder l'aide et parcourir toutes les fonctions de manipulation de string (qui commencent d'ailleurs par String...() )à votre disposition.

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 11:34
par killgones
j'ai ajouté la fonction mais rien ne fait :s. je te met mon code pour voir si je l'ai bien ajouté.
► Afficher le texte
merci

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 11:37
par jbnh
Quels sont les résultats que vous obtenez, par rapport à quels inputs ? Pouvez-vous nous donner des exemples ?

Vous réalisez également que vous opérez les modifications après le traitement de la chaîne que vous écrivez dans vos signature mails

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 11:43
par killgones
lorsque je fait F5 mon programme ce lance, je rentre alors dans les champs Num_Tel...Fax et mobile par exemple "01.63.25.38.45" et lorsque je créé ma signature j'ai au final la même chose "01.63.25.38.45" et moi j'aimerais en faite avoir comme résultat final "1.63.25.38.45" mais il ne suffit pas juste de retirer le "0" parce que je souhaiterais avoir le même résultat si la personne rentre "01-06-56-89-45" il faudra retirer le "0" et modifier les "-" par un "."

J'espère que mon exemple est clair.

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 11:51
par jbnh
Jetez un oeil à ceci, testez les deux exemples, le résultat est pareil. Intégrez le dans votre script au bon endroit.

Code : Tout sélectionner

$var = "01-63-25-38-45"
;$var = "01.63.25.38.45"
$var = StringReplace($var, "-",".")
$var = StringRight($var, StringLen($var)-1)
Msgbox(0,"",$var)
 
Je reprend également mon message édité précédent :
Vous réalisez également que vous opérez les modifications après le traitement de la chaîne que vous écrivez dans vos signature mails
Faites vos modification au bon moment, sur la bonne chaine !

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:00
par killgones
j'ai bien modifié et remis au bon endroit et cela fonctionne,

quand je rentre par exemple "01.65.25.36.24" ou "01-25-69-78-52" j'obtiens bien 0165253614 donc nickel merci de votre aide.

après y a t'il une fonction qui me permet de récupéré uniquement les 9 derniers chiffres donc sans le "0" et formater le résultat en 1.65.25.36.24 ?

Cordialement.

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:08
par jbnh
Si l'utilisateur encode "01.65.25.36.24" ou "01-25-69-78-52", il est dommage de passer par 0165253614 pour revenir à 1.65.25.36.24.

Testez l'exemple que je vous ai donné, et ne passez plus par StringRegExpReplace

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:14
par killgones
vous avez raison, donc il est plus utile de faire en sorte que le format final soit directement intégré.

par exemple que l'utilisateur rentre "0123658545" ou 01.23.65.25.14" au final une fois le programme lancé il aura dans sa signature "1.23.52.36.45"

mais qu'elle fonction utilisé ?

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:32
par jbnh
Ha si l'utilisateur peut egalement entrer 0163253845 alors ils vaut mieux jouer avec StringRegExpReplace.

Voici vos trois cas, ils donnent tous le même résultat de cette manière :

Code : Tout sélectionner

$var = StringRegExpReplace("01.63.25.38.45", '\D', "")
$var = StringRegExpReplace($var, '(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1.$2.$3.$4.$5')
msgbox(0,"",StringRight($var,StringLen($var)-1))

$var = StringRegExpReplace("01-63-25-38-45", '\D', "")
$var = StringRegExpReplace($var, '(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1.$2.$3.$4.$5')
msgbox(0,"",StringRight($var,StringLen($var)-1))

$var = StringRegExpReplace("0163253845", '\D', "")
$var = StringRegExpReplace($var, '(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$1.$2.$3.$4.$5')
msgbox(0,"",StringRight($var,StringLen($var)-1))

 

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:37
par killgones
merci beaucoup,

je n'ai juste qu'a changer $var par $Num_Tel $Num_Mobile etc pour avoir mon rendu final ?

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:40
par mikell
Autant faire un code générique qui tiendra compte de n'importe quelle faute de frappe...

Code : Tout sélectionner

;$string = "tralala 01-63-25-38-45 tsoin tsoin"
;$string = " 11. 63,25-38.45"
$string = "  0163253845"

$res = StringRegExpReplace($string, '\D', "")
$res2= StringRegExpReplace(Number($res), '(?<=\d)(?=(\d{2})+(?!\d))', ".")  
Msgbox(0,"", $res2)
Edit
Mais le plus simple (et de loin) serait de refuser une entrée dans l'input qui ne serait pas au bon format

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:41
par killgones
OK et j'intègre comment ce code au mien pour ressortir au final juste "1.25.36.25.14" ?

merci de ta réponse

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 12:46
par mikell
Ben toujours pareil...

Code : Tout sélectionner

$lecture = GuiCtrlRead($input)
$temp = StringRegExpReplace($lecture, '\D', "")
$resultat = StringRegExpReplace(Number($temp), '(?<=\d)(?=(\d{2})+(?!\d))', ".")  

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 13:56
par killgones
je dois mal rentrer les infos parce que ça ne m'affiche plus rien

Code : Tout sélectionner

$Num_Tel_Fixe_html = GuiCtrlRead($Num_Tel_Fixe)
            $temp = StringRegExpReplace($Num_Tel_Fixe_html, '\D', "")
            $resultat = StringRegExpReplace(Number($temp), '(?<=\d)(?=(\d{2})+(?!\d))', ".")

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 14:08
par jbnh
Vous avez tout en main pour vous débrouiller. Prenez le temps de chercher et vous arriverai à vos fin 8)

Re: [..] Fonction StringRegexp

Posté : mar. 28 oct. 2014 14:16
par mikell
Un peu de logique dans le traitement des variables, que diable :mrgreen: