LIKE [Résolu]

Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
- - Dernière réponse : cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 12 avril 2011 à 01:21
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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
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 []]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46
0
Merci
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
Commenter la réponse de cs_ShayW