Page 1 sur 1
condition sur une chaîne de chiffre
Posté : jeu. 09 nov. 2017 11:34
par yohanb767
Bonjour à tous ,
j'ai essayer chercher un peu sur le net mais je ne sais pas trop dans quel direction chercher alors je me tourne vers ce forum au cas ou quelqu'un aurai un exemple de ce que je voudrai
j'aimerai en faite inclure dans un de mes script une condition sur une chaîne de chiffre et de lettre
exemple : CK1985475 si cette chaîne possède un C alors .. si cette chaîne posséde un D alors..
sachant que ce sera toujours dans les deux premiere lettre
j’espère avoir bien expliqué mon prob
en tout cas merci d'avance pour votre aide
Yohan
Re: condition sur une chaîne de chiffre
Posté : jeu. 09 nov. 2017 11:43
par walkson
Bonjours,
StringInStr() devrait convenir
Re: condition sur une chaîne de chiffre
Posté : jeu. 09 nov. 2017 13:39
par TomAijerrie
Et pour avoir que les 2 premiers caractères,
StringLeft($texte,2)
Ce qui donne :
Code : Tout sélectionner
$texte = "CK1985475"
If StringInStr(StringLeft($texte,2),"C") Then
;Il y a un C
EndIf
If StringInStr(StringLeft($texte,2),"D") Then
;Il y a un D
EndIf
;...
Re: condition sur une chaîne de chiffre
Posté : jeu. 09 nov. 2017 14:50
par walkson
@TomAijerrie
StringLeft($texte,2) n'est pas nécessaire puisque
StringInStr() retourne la position du caractère trouvé
un exemple:
$variable = "CK1985475"$val = InputBox("","recherche")$recherche = StringInStr($variable,$val)Switch $recherche Case 1 MsgBox(0,"cas 1","dans variable, recherche est en position " & $recherche) Case 2 MsgBox(0,"cas 2","dans variable, recherche est en position " & $recherche) case 3 To 10 MsgBox(0,"autre","dans variable, recherche est en position " & $recherche) Case 0 MsgBox(0,"pas trouvé","dans variable, recherche est en position " & $recherche)EndSwitch
Sauf, peut être, dans le cas de doublon comme
$variable = "CC1985475" (problème que ne soulève pas yohanb767)
Dans ce cas, je verrais quelque chose comme
Re: condition sur une chaîne de chiffre
Posté : jeu. 09 nov. 2017 15:10
par walkson
@yohanb767
C'est très gentil à vous de me remercier mais ce serait mieux de le faire sur le bon post
https://www.autoitscript.fr/forum/viewt ... 38#p101538 (de 2014

)
Re: condition sur une chaîne de chiffre
Posté : ven. 10 nov. 2017 12:58
par yohanb767
Rebonjour Walkson , et je note pour le com ! je n'avais pas fais gaffe
par contre juste un points sur ma recherche que je n'avais pas stipulé
c'est qu'en faite dans ma recherche cela peux être CK....... mais aussi C....... mais aussi d'autre lettre comme W.... ou RX..... et que pour chaque cas cela lance une action différente
si CK...... alors
si C ..... alors
si W..... alors
si RX..... alors
du coup avec l'exemple je suis un peux bloqué
Re: condition sur une chaîne de chiffre
Posté : ven. 10 nov. 2017 14:48
par walkson
Bonjour,
Je ne sais pas si je vous ai bien compris mais je vous propose ceci
Re: condition sur une chaîne de chiffre
Posté : ven. 10 nov. 2017 15:26
par yohanb767
désolé Walkson , je n'arrive pas a expliquer je pense
je vais essayer d'exposer le tout
j'ai une input qui contient ce fameux code avec ces deux lettres ou une seul et une succession de chiffres (jamais les mêmes)
exemple CK542544 ou C4546784 ou CK02144564 ou W5451321
si l'ensemble contient CK j'aimerai lancer un de mes script que je possède déjà
si l'ensemble contient juste un C j'aimerai lancer un autre script
si l'ensemble contient un juste un W encore un autre script
Etc
j'espère que cela sera plus claire pour éviter de trop t'ennuyer
en tout cas merci de ton aide car cela me met sur des pistes même si je sèche encore
Re: condition sur une chaîne de chiffre
Posté : ven. 10 nov. 2017 16:16
par walkson
Si j'ai bien compris, vous cherchez les lettres dans une chaîne et en fonction du résultat, vous effectuez une action
comme ceci ?
#include <StringConstants.au3>#include <Array.au3>Global $sujet, $regex, $aArray$sujet = "C14567890"$regex = "(?s)[A-Z]+"$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYMATCH)If @error Then Exit MsgBox(16,"Pas de lettre","ERROR")_ArrayDisplay($aArray)Switch $aArray[0] Case "CK" MsgBox(0,$aArray[0],"y a CK") ;action Case "CD" ;action Case "C" MsgBox(0,$aArray[0],"y a C") ;action Case "WE" ;action Case Else MsgBox(0,"","y a pas")EndSwitch
Je ne suis pas très brillant en regex mais ça fonctionne. D'autres auront sûrement de meilleurs solutions
J'ai rajouté une gestion d'erreur dans le cas où le regex ne trouve rien (pas de lettre) sinon $aArray[0] bugue
Re: condition sur une chaîne de chiffre
Posté : ven. 10 nov. 2017 23:17
par yohanb767
c'est impeccable Walkson !
merci
j'ai quelques adaptations à y faire mais c'est exactement ce que je voulais
bon week-end
et encore merci pour toutes tes connaissances
Re: condition sur une chaîne de chiffre
Posté : mer. 29 nov. 2017 08:24
par yohanb767
Bonjour walkson ,
je reviens sur un script que tu m'avais proposé pour résoudre un de mes problèmes
le but été de lancer des actions différentes selon les lettres qui composent une série de lettres et de chiffres
pour cela tu m'a écris une commande pour isoler que les lettres dans la série de chiffres et lettres
et ensuite utiliser le fameux switch case
le soucis c'est qu'à présent j'ai un autre cas qui peux arriver c'est a dire avoir juste une série de chiffre dans $sujet
le problème c'est que le fait de faire un switch case que sur les lettres cela ne rend pas possible la chose
j'aimerai que si il y a juste une série de chiffre que cela lance une autre action
pense tu qu'il y a moyen d'inclure cela dans ce script
bonne soirée ou bonne journée à toi
voici ce que tu m'avais proposé
Code : Tout sélectionner
#include <StringConstants.au3>
#include <Array.au3>
Global $sujet, $regex, $aArray
$sujet = "C14567890"
$regex = "(?s)[A-Z]+"
$aArray = StringRegExp($sujet, $regex, $STR_REGEXPARRAYMATCH)
If @error Then Exit MsgBox(16,"Pas de lettre","ERROR")
_ArrayDisplay($aArray)
Switch $aArray[0]
Case "CK"
MsgBox(0,$aArray[0],"y a CK")
;action
Case "CD"
;action
Case "C"
MsgBox(0,$aArray[0],"y a C")
;action
Case "WE"
;action
Case Else
MsgBox(0,"","y a pas")
EndSwitch