condition sur une chaîne de chiffre

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

condition sur une chaîne de chiffre

#1

Message 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
Avatar du membre
walkson
Modérateur
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

#2

Message par walkson »

Bonjours,
StringInStr() devrait convenir
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
TomAijerrie
Niveau 5
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

#3

Message 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
;...
Avatar du membre
walkson
Modérateur
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

#4

Message 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
Local $sText = "CC1985475"
Local $sMot_cle = "C"
Local $positiontt
For $i = 1 To 2
    $position = StringInStr($sText,$sMot_cle,1,$i)
If $position < 3 Then $positiontt &= $position & @CRLF
Next
MsgBox(0,"",$positiontt)
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)
Avatar du membre
walkson
Modérateur
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

#5

Message par walkson »

@yohanb767
C'est très gentil à vous de me remercier mais ce serait mieux de le faire sur le bon post :lol:
https://www.autoitscript.fr/forum/viewt ... 38#p101538 (de 2014 :mrgreen: )
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: condition sur une chaîne de chiffre

#6

Message 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é
Avatar du membre
walkson
Modérateur
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

#7

Message par walkson »

Bonjour,
Je ne sais pas si je vous ai bien compris mais je vous propose ceci
Local $sText = "CK1985475"
Local $sMot_cle = "CK"
$position = StringInStr($sText,$sMot_cle,1,1)
MsgBox(0,"",$position)
If $position = 1 Then
   Select
      Case $sMot_cle = "CK"
         ;action
      Case $sMot_cle = "CD"
         ;action
      Case $sMot_cle = "C"
         ;action
      Case $sMot_cle = "WE"
         ;action
   EndSelect
EndIf
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: condition sur une chaîne de chiffre

#8

Message 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
Avatar du membre
walkson
Modérateur
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

#9

Message 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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: condition sur une chaîne de chiffre

#10

Message 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
yohanb767
Niveau 5
Niveau 5
Messages : 117
Enregistré le : mer. 28 déc. 2016 14:09
Status : Hors ligne

Re: condition sur une chaîne de chiffre

#11

Message 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
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"
Répondre