cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
11 avril 2011 à 00:51
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 12 avril 2011 à 01:21
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 []]
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 avril 2011 à 09:17
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)
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 11 avril 2011 à 12:28
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