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 A
–Z
y [!H–L]
da como resultado una coincidencia si la posición del carácter correspondiente contiene cualquier carácter fuera del intervalo H
–L
.
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 A
–C
o del intervalo X
–Z
.
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*"