LIKE [Résolu]

Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
- - Dernière réponse : cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
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 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
75
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 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
75
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
3247
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
26 décembre 2018
51
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.