VB.NET - si la chaîne contient "value1" ou "value2""
je me demande comment je peux vérifier si une chaîne contient "valeur1" ou "valeur2"? J'ai essayé ceci:
If strMyString.Contains("Something") Then
End if
Cela fonctionne, mais ce n'est pas:
If strMyString.Contains("Something") or ("Something2") Then
End if
ceci me donne l'erreur que la conversion de chaîne en Long ne peut pas être faite.
Si je mets la or ("Something2")
à l'intérieur de la parenthèse de la première, il me donne l'erreur que la chaîne ne peut pas être converti en Booléen.
Alors, comment puis-je vérifier si la chaîne contient "mot1" ou "chaîne2" sans devoir écrire trop de code?
8 réponses
Vous devez le faire comme ceci:
If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
'[Put Code Here]
End if
Vous avez besoin de ce
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
'Code
End if
Voici la solution alternative pour vérifier si une chaîne particulière contient une chaîne prédéfinie. Il utilise IndexOf
Fonction:
'this is your string
Dim strMyString As String = "aaSomethingbb"
'if your string contains these strings
Dim TargetString1 As String = "Something"
Dim TargetString2 As String = "Something2"
If strMyString.IndexOf(TargetString1) <> -1 Or strMyString.IndexOf(TargetString2) <> -1 Then
End If
NOTE: Cette solution a été testée avec Visual Studio 2010.
outre les réponses déjà données, il sera plus rapide si vous utilisez OrElse
au lieu de Or
parce que le deuxième test est court-circuité. Ceci est particulièrement vrai si vous savez qu'une chaîne est plus probable que l'autre, auquel cas placez cette première:
If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then
'Code
End if
Vous avez ("Something2")
par lui - même-vous devez le tester afin qu'un booléen soit retourné:
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
End if
L'erreur indique que le compilateur pense que vous voulez faire un bitwise OR
sur un booléen et une corde. Ce qui bien sûr ne fonctionne pas.
If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then
End if
fait intéressant, Cette solution peut casser, mais une solution de contournement: Je cherche ma base de données appelée KeyWorks.accdb qui doit exister:
Exécuter ceci:
Dim strDataPath As String = GetSetting ("KeyWorks", "dataPath", "01", "") 'get from registry
si ce n'est pas strDataPath.Contient ("KeyWorks.accdb") alors....etc.
si ma base de données s'appelle KeyWorksBB.accdb, la déclaration If va trouver cela acceptable et quitter la déclaration if parce qu'elle a effectivement trouvé KeyWorks et accdb.
si j'entoure le qualificatif de l'instruction If avec des guillemets simples comme ("'KeyWorks.accdb'"), il Recherche maintenant tous les caractères consécutifs dans l'ordre et entrerait le bloc If parce qu'il ne correspond pas.