Like (operador, Visual Basic)

Compara una cadena con un patrón.

Importante

El operador Like no se admite actualmente en proyectos de .NET Core y .NET Standard.

Sintaxis

result = string Like pattern  

Partes

result
Necesario. Cualquier variable Boolean. El resultado es un valor de tipo Boolean que indica si string se ajusta a pattern.

string
Obligatorio. Cualquier expresión String .

pattern
Obligatorio. Cualquier expresión String que se ajuste a las convenciones de coincidencia de patrones descritas "Comentarios".

Comentarios

Si el valor de string se ajusta al patrón incluido en pattern, result es True. Si la cadena no se ajusta al modelo, result es False. Si tanto string como pattern son cadenas vacías, el resultado es True.

Método de comparación

El comportamiento del operador Like depende de la instrucción Option Compare. El método de comparación de cadenas predeterminado para cada archivo de origen es Option Compare Binary.

Opciones de patrón

La coincidencia de patrones integrada proporciona una herramienta versátil para las comparaciones de cadenas. Las características de coincidencia de patrones permiten hacer coincidir cada carácter en string con un carácter específico, un carácter comodín, una lista de caracteres o un intervalo de caracteres. En la tabla siguiente se muestran los caracteres permitidos en pattern y su coincidencia.

Caracteres en pattern Coincide con string
? Un carácter cualquiera
* Cero o más caracteres
# Cualquier dígito único (0–9)
[charlist] Cualquier carácter individual en charlist
[!charlist] Cualquier carácter individual que no esté en charlist

Listas de caracteres

Se puede usar un grupo de uno o varios caracteres entre corchetes (charlist) ([ ]) para coincidir con cualquier carácter individual de string y puede incluir casi cualquier código de caracteres, incluidos los dígitos.

Un signo de exclamación (!) al principio de charlist significa que se realiza una coincidencia si se encuentra algún carácter, excepto si los caracteres en charlist se encuentran en string. Cuando se usan corchetes externos, el signo de exclamación coincide con sí mismo.

Caracteres especiales

Para la coincidencia con los caracteres especiales de corchete izquierdo ([), signo de interrogación (?), signo numérico (#) y asterisco (*), póngalos entre corchetes. No se puede usar el corchete derecho (]) dentro de un grupo para que coincida con sí mismo, pero se puede usar fuera de un grupo como carácter individual.

La secuencia de caracteres [] se considera una cadena de longitud cero (""). Sin embargo, no puede formar parte de una lista de caracteres entre corchetes. Si quiere comprobar si una posición de string contiene uno de un grupo de caracteres o ningún carácter, puede usar Like dos veces. Para ver un ejemplo, consulte Procedimiento para comprobar si una cadena coincide con un patrón.

Intervalos de caracteres

Mediante el uso de un guión () para separar los límites inferior y superior del intervalo, charlist puede especificar un intervalo de caracteres. Por ejemplo, [A–Z] da como resultado una coincidencia si la posición de carácter correspondiente de string contiene cualquier carácter dentro del intervalo AZ y [!H–L] da como resultado una coincidencia si la posición del carácter correspondiente contiene cualquier carácter fuera del intervalo HL.

Al especificar un intervalo de caracteres, deben aparecer en orden ascendente, es decir, de menor a mayor. Por lo tanto, [A–Z] es un patrón válido, pero [Z–A] no lo es.

Varios intervalos de caracteres

Para especificar varios intervalos para la misma posición de carácter, póngalos entre corchetes sin delimitadores. Por ejemplo, [A–CX–Z] da como resultado una coincidencia si la posición de caracteres correspondiente de string contiene cualquier carácter dentro del intervalo AC o del intervalo XZ.

Uso del guión

Un guión () puede aparecer al principio (después de un signo de exclamación, si existe) o al final de charlist para que coincida con sí mismo. En cualquier otra ubicación, el guión identifica un intervalo de caracteres delimitados por los caracteres a cualquier lado del guión.

Secuencia de intercalación

El significado de un intervalo especificado depende del orden de caracteres en tiempo de ejecución, determinado por Option Compare y la configuración regional del sistema en el que se ejecuta el código. Con Option Compare Binary, el intervalo [A–E] coincide con A, B, C, D y E. Con Option Compare Text, [A–E] coincide con A, a, À, à, B, b, C, c, D, d, E y e. El intervalo no coincide con Ê o ê porque los caracteres acentuados se intercalan después de caracteres no acentuados en el criterio de ordenación.

Caracteres de dígrafo

En algunos idiomas, hay caracteres alfabéticos que representan dos caracteres independientes. Por ejemplo, varios idiomas usan el carácter æ para representar los caracteres a y e cuando aparecen juntos. El operador Like reconoce que el carácter de dígrafo único y los dos caracteres individuales son equivalentes.

Cuando se especifica un idioma que usa un carácter de dígrafo en la configuración regional del sistema, una aparición del carácter de dígrafo único en pattern o string coincide con la secuencia de dos caracteres equivalente en la otra cadena. Del mismo modo, un carácter de dígrafo en pattern entre corchetes (por sí mismo, en una lista o en un intervalo) coincide con la secuencia de dos caracteres equivalente en string.

Sobrecarga

El operador Like puede sobrecargarse, lo que significa que una clase o estructura puede redefinir su comportamiento cuando un operando tiene el tipo de esa clase o estructura. Si el código usa este operador en una clase o estructura de este tipo, asegúrese de que comprende su comportamiento redefinido. Para obtener más información, consulta Operator Procedures.

Ejemplo

En este ejemplo se usa el operador Like para comparar cadenas con varios patrones. Los resultados se incluyen en una variable Boolean que indica si cada cadena se ajusta al patrón.

Dim testCheck As Boolean
' The following statement returns True (does "F" satisfy "F"?)
testCheck = "F" Like "F"
' The following statement returns False for Option Compare Binary
'    and True for Option Compare Text (does "F" satisfy "f"?)
testCheck = "F" Like "f"
' The following statement returns False (does "F" satisfy "FFF"?)
testCheck = "F" Like "FFF"
' The following statement returns True (does "aBBBa" have an "a" at the
'    beginning, an "a" at the end, and any number of characters in 
'    between?)
testCheck = "aBBBa" Like "a*a"
' The following statement returns True (does "F" occur in the set of
'    characters from "A" through "Z"?)
testCheck = "F" Like "[A-Z]"
' The following statement returns False (does "F" NOT occur in the 
'    set of characters from "A" through "Z"?)
testCheck = "F" Like "[!A-Z]"
' The following statement returns True (does "a2a" begin and end with
'    an "a" and have any single-digit number in between?)
testCheck = "a2a" Like "a#a"
' The following statement returns True (does "aM5b" begin with an "a",
'    followed by any character from the set "L" through "P", followed
'    by any single-digit number, and end with any character NOT in
'    the character set "c" through "e"?)
testCheck = "aM5b" Like "a[L-P]#[!c-e]"
' The following statement returns True (does "BAT123khg" begin with a
'    "B", followed by any single character, followed by a "T", and end
'    with zero or more characters of any type?)
testCheck = "BAT123khg" Like "B?T*"
' The following statement returns False (does "CAT123khg"?) begin with
'    a "B", followed by any single character, followed by a "T", and
'    end with zero or more characters of any type?)
testCheck = "CAT123khg" Like "B?T*"

Consulte también