condition sur une chaîne de chiffre
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
condition sur une chaîne de chiffre
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
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
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
Bonjours,
StringInStr()
devrait convenirCordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- TomAijerrie
- Niveau 5
- Messages : 192
- Enregistré le : lun. 02 juin 2014 09:55
- Localisation : Lyon
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
Et pour avoir que les 2 premiers caractères,
Ce qui donne :
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
;...
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
@TomAijerrie
un exemple:
Sauf, peut être, dans le cas de doublon comme
Dans ce cas, je verrais quelque chose comme
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
$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
$variable = "CC1985475"
(problème que ne soulève pas yohanb767)Dans ce cas, je verrais quelque chose comme
Modifié en dernier par walkson le jeu. 09 nov. 2017 18:13, modifié 2 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
@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 )
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 )
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: condition sur une chaîne de chiffre
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é
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é
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
Bonjour,
Je ne sais pas si je vous ai bien compris mais je vous propose ceci
Je ne sais pas si je vous ai bien compris mais je vous propose ceci
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: condition sur une chaîne de chiffre
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
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
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: condition sur une chaîne de chiffre
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 ?
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
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
#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
J'ai rajouté une gestion d'erreur dans le cas où le regex ne trouve rien (pas de lettre) sinon $aArray[0] bugue
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: condition sur une chaîne de chiffre
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
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
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é
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
Modifié en dernier par Tlem le mer. 29 nov. 2017 11:50, modifié 1 fois.
Raison : La balise "Ceode2" n'est pas faites pour plusieurs lignes de code. Remplacement par la balise "Code"
Raison : La balise "Ceode2" n'est pas faites pour plusieurs lignes de code. Remplacement par la balise "Code"