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?

32
demandé sur Cœur 2011-06-16 13:58:24

8 réponses

Vous devez le faire comme ceci:

If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
    '[Put Code Here]
End if
61
répondu Rifky 2015-10-22 14:39:22

Vous avez besoin de ce

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    'Code
End if
11
répondu Ash Burlaczenko 2011-06-16 10:00:02

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.

4
répondu Predator 2011-09-06 18:37:56

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
3
répondu Matt Wilko 2011-06-16 13:21:28

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
2
répondu Oded 2011-06-16 09:59:28
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.

0
répondu agent-j 2011-06-16 10:00:31
 If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then


     End if
0
répondu Android 2011-06-16 10:01:52

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.

-3
répondu Dunderchief 2014-06-19 15:48:11