Page 1 sur 1
[R] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 10:23
par GMH
Bonjour,
Dans mon code, il n'est pas rare que je sois conduit à créer une longue condition du type :
If $lettre = "b" Or $lettre = "d" Or $lettre = "g" Or $lettre = "h" Or $lettre = "i" Or $lettre = "k" ..... etc...... Then
Ces longues conditions dépassent largement la largeur de l'écran de l'éditeur.
Y a-t-il moyen d'écrire plus intelligemment une longue condition ?
Je vous remercie de votre réponse.
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 11:21
par rgx
- (espace + underscore) permet de couper une ligne dans l'éditeur (sauf dans une chaine)
Mais sinon, pourquoi ne pas utiliser
Switch plutôt que des tas de
Or ?
(Cela permet en plus de jouer avec des intervalles)
Code : Tout sélectionner
For $i = 97 To 122
$lettre = Chr($i)
Switch $lettre
Case "b", "d", "g", "h", "i", "k"
ConsoleWrite($lettre & " Oui" & @CRLF)
Case "x" To "z"
ConsoleWrite($lettre & " x-z" & @CRLF)
Case Else
ConsoleWrite($lettre & " Non" & @CRLF)
EndSwitch
Next
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 11:34
par Tlem
Bonjour.
Sinon une alternative plus courte au code de GMH et qui évite la modification en profondeur :
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 16:31
par mikell
Thierry, ton code marche si $lettre ne contient effectivement qu'une seule lettre, parce que "hik" matche
Sinon ya le bon vieux regex
If StringRegExp($lettre, '^[bdghik]$') Then ...
Mais j'aime bien la solution Switch, very versatile
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 18:21
par Tlem
Je me base sur ce que GMH a donné en information.
D'après son code il test une variable qui contient une seule et unique lettre, d'où ma proposition simplifiée. ^^
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 19:00
par GMH
Merci à tous trois pour ces solutions.
If StringInStr("bdghik", $lettre) Then ...
If StringRegExp($lettre, '^[bdghik]$') Then ...
Les 2 solutions ci-dessus sont-elles adaptables lorsque les conditions sont l'existence de mots plutôt que de caractères uniques tels que :
If $mot = "le" Or $mot = "la" Or $mot = "les" Or $mot = "un" .....etc...... Then
Merci encore pour vos idées et votre attention.
Re: [..] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 19:09
par mikell
Le regex marche mais il faut le formuler différemment :
If StringRegExp($mot, '^(le|la|les|un|une)$') Then ...
^ : début de string
| : alternative
$ : fin de string
les balises de début et de fin sont nécessaires sinon n'importe quel mot contenant "le" , "la", etc... sera accepté
Re: [R] Présentation d'une longue condition
Posté : sam. 07 déc. 2019 19:17
par GMH
Super !
Grand merci encore et bon week-end.