LIKE [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous

J'ai un résultat bizarre avec like

Dim str As String
        str = "-3-4"
        If str.Substring(0, 1) Like "[^,*,/,-,+)]" = False Then
            MessageBox.Show("False")
        End If


j'ai le messagebox bien que le premier caractère
est -

par contre si j'ai str = "*3-4"
le messagebox n'apparait pas ce qui est normal

seulement pour - le messagebox apparait
et en verifiant avec le debugger
str.Substring(0, 1) Like "[^,*,/,-,+)]" :false

merci

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
Ah oui, j'oubliai :
Le symbole - est utilisé dans la syntaxe même des opérateurs Like, par exemple pour désigner un digit numérique : [0-9]
Donc, dans ta syntaxe actuelle, il comprend "de / à +"
Il suffit d'encadrer les symboles spéciaux par des crochets :
Je pense que [^*/[-]+)] serait mieux interprété.
Je n'est pas vérifié, mais ta remarque entre "[-*/^+)]" et "[^*/-+)]" doit venir du fait que les codes Ascii sont décroissant, dans ce cas, il reconnait - comme un caractère et pas comme un "opérateur d'extension" interne.

Le symbole [ ou ] est dans le même cas de figure --> [[] ou []]
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
Salut

Non, cette structure suffit, inutile de vouloir surcharger avec = False
If Not str.Substring(0, 1) Like "[^,*,/,-,+)]" Then

D'autre part, la chaine que tu places dans les crochets après le Like correspond à la liste des caractères recherchés. Cette liste n'a pas besoin de séparateur comme la virgule. Pire même, dans ce cas, la virgule peut être un caractère recherché.
--> "[^,*/-+)]"

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
47
Salut

Si il y a encore encore plus bizarre

Dim str As String
str = "-3-4"
Try
  If Not str.Substring(0, 1) Like "[^*/-+)]" Then
      MessageBox.Show("character not in pattern")
  End If
Catch ex As Exception
   MessageBox.Show(ex.Message)
End Try


l'exeception est relevé
argument pattern is not a valid value

par contre si j'écris
le pattern comme ça
"[-*/^+)]" au lieu de "[^*/-+)]" il n'y a pas
d'erreur

"[*/^+-)]" dans ce cas une erreur est relevé
et d'autre cas encore
j'essaye de trouver la raison