2011-06-16 15 views
30

Me pregunto cómo puedo comprobar si una cadena contiene "valor1" o "valor2"? He intentado esto:VB.NET - Si cadena contiene "valor1" o "valor2"

If strMyString.Contains("Something") Then 

End if 

Esto funciona, pero esto no significa:

If strMyString.Contains("Something") or ("Something2") Then 

End if 

Esto me da el error de que la conversión de la cadena a largo no se puede hacer. Si pongo la or ("Something2") dentro del paréntesis de la primera, que me da el error de que la cadena no se puede convertir a Boolean.

Entonces, ¿cómo puedo verificar si la cadena contiene "string1" o "string2" sin tener que escribir demasiado código?

Respuesta

58

Tienes que hacerlo de esta manera:

If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then 
    '[Put Code Here] 
End if 
+0

Voy a seguir adelante y establecer esto como la respuesta, ya que eres un usuario más reciente :) –

+9

Sugeriría utilizar la versión en cortocircuito de Or, OrElse. – dbasnett

+1

Para limpiar el código, elimine el asterisco al final de strMyString.Contains ("Something2") * << --- – RicardoBalda

2

Tienes ("Something2") por sí mismo - que necesita para probarlo por lo que un booleano se devuelve:

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then 
+0

Por supuesto, todo tiene sentido ahora :) –

11

usted necesita este

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then 
    'Code 
End if 
+0

No puedo creer que no haya intentado esto ... ¡Y una respuesta tan rápida! :) –

0
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then 

End if 

El error indica que el compilador piensa que desea hacer una nivel de bits en un booleano y una cadena. Lo cual por supuesto no funcionará.

0
If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then 


    End if 
3

Además de las respuestas ya dadas, será más rápido si se utiliza en lugar de OrElseOr porque la segunda prueba está en cortocircuito. Esto es especialmente cierto si usted sabe que una cadena es más probable que el otro, en cuyo caso este primer lugar:

If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then 
    'Code 
End if 
4

Aquí está la solución alternativa para comprobar si una cadena en particular contiene alguna cadena predefinida. Utiliza IndexOf Función:

'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 

NOTA: Esta solución ha sido probado con Visual Studio 2010.

-2

Curiosamente, esta solución puede romper, pero una solución: Buscando a mi base de datos llamada KeyWorks.accdb que debe existir:

Ejecutar este:

Dim strDataPath como secuencia = GetSetting ("KeyWorks", "rutaDatos", "01", "") 'obtener de Registro

si no se strDataPath.Contains ("") KeyWorks.accdb entonces .... etc.

Si mi base de datos se llama KeyWorksBB.accdb, la instrucción If encontrará esto aceptable y saldrá de la instrucción if porque efectivamente encontró KeyWorks y accdb.

Si marco el calificador de declaración If con comillas simples como ("'KeyWorks.accdb'"), ahora busca todos los caracteres consecutivos en orden e ingresará el bloque If porque no coincide.

Cuestiones relacionadas