Me pregunto cómo puedo comprobar si una cadena contiene «valor1» o «value2»?
He intentado esto:

If strMyString.Contains("Something") Then

End if

Esto funciona, pero esto no:

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

End if

Este me da el error de que la conversión de cadena a la Larga no se puede hacer.
Si pongo la or ("Something2") dentro de los paréntesis de la primera, se me da el error de que la cadena no puede ser convertida a valores Booleanos.

Entonces, ¿cómo puedo comprobar si la cadena contiene «cadena1» o «texto2» sin tener que escribir mucho código?

InformationsquelleAutor Kenny Bones | 2011-06-16

8 Comentarios

  1. 69

    Tienes que hacerlo así:

    If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
        '[Put Code Here]
    End if
    • Voy a seguir adelante y establecer esto como la respuesta, ya que eres un usuario más reciente 🙂
    • Me gustaría sugerir el uso de la cortocircuitado versión de O, OrElse.
    • Para limpiar el código, por favor elimine el asterisc al final de strMyString.Contiene(«Something2»)* <<—
  2. 11

    Necesita esta

    If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
        'Code
    End if
    • No puedo creer que no se trate de esto.. Y una respuesta tan rápida! 🙂
  3. 4

    Además de las respuestas ya dadas que será más rápido si se utiliza OrElse en lugar de Or porque la segunda prueba es la de cortocircuito. Esto es especialmente cierto si usted sabe que una cadena es más probable que la otra, en cuyo caso el lugar esta primera:

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

    Aquí está la alternativa de solución para comprobar si una cadena contiene algunos 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.

  5. 2

    Tiene ("Something2") por sí mismo – usted necesita para probarlo así que se devuelve un booleano:

    If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    • Por supuesto, todo tiene sentido ahora 🙂
  6. 0
    If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    
    End if

    El error indica que el compilador cree que usted quiere hacer un bit a bit OR en un Booleano y una cadena. Que por supuesto no va a funcionar.

  7. 0
     If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then
    
    
         End if
  8. -3

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

    Ejecutar este:

    Dim strDataPath as String = GetSetting(«KeyWorks», «dataPath», «01», «») ‘obtener de registro

    Si No strDataPath.Contiene(«KeyWorks.accdb»), a Continuación,….etc.

    Si mi base de datos se denomina KeyWorksBB.accdb, la declaración de Si se encuentra que es aceptable y de salida de la instrucción if, porque lo hizo, de hecho, encontrar KeyWorks y accdb.

    Si yo rodean la declaración de Si el calificador con comillas simples como («‘KeyWorks.accdb'»), se ve ahora para todos los caracteres consecutivos en orden y entraría Si el bloque, porque no correspondía.

Dejar respuesta

Please enter your comment!
Please enter your name here