[..] Fonction StringRegexp

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

[..] Fonction StringRegexp

#1

Message 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.
Modifié en dernier par mikell le mar. 28 oct. 2014 10:29, modifié 2 fois.
Raison : balise spoiler
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..]Fonction StringRegexp

#2

Message 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', "")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#3

Message 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
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#4

Message par killgones »

Comment je l’intègre à mon code ?
directement après les GUI ?
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#5

Message 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.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#6

Message 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
Modifié en dernier par jguinch le mar. 28 oct. 2014 14:05, modifié 1 fois.
Raison : Ajout de la balise Spoiler
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#7

Message 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
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#8

Message 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.
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#9

Message 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 !
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#10

Message 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.
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#11

Message 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
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#12

Message 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é ?
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#13

Message 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))

 
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#14

Message par killgones »

merci beaucoup,

je n'ai juste qu'a changer $var par $Num_Tel $Num_Mobile etc pour avoir mon rendu final ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fonction StringRegexp

#15

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#16

Message 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
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fonction StringRegexp

#17

Message par mikell »

Ben toujours pareil...

Code : Tout sélectionner

$lecture = GuiCtrlRead($input)
$temp = StringRegExpReplace($lecture, '\D', "")
$resultat = StringRegExpReplace(Number($temp), '(?<=\d)(?=(\d{2})+(?!\d))', ".")  
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
killgones
Niveau 2
Niveau 2
Messages : 22
Enregistré le : mar. 28 oct. 2014 10:07
Status : Hors ligne

Re: [..] Fonction StringRegexp

#18

Message 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))', ".")
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Fonction StringRegexp

#19

Message par jbnh »

Vous avez tout en main pour vous débrouiller. Prenez le temps de chercher et vous arriverai à vos fin 8)
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Fonction StringRegexp

#20

Message par mikell »

Un peu de logique dans le traitement des variables, que diable :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre