Operador Like (Visual Basic)

Compara uma cadeia de caracteres com um padrão.

Importante

Atualmente, o operador Like não é compatível com projetos .NET Core e .NET Standard.

Sintaxe

result = string Like pattern  

Partes

result
Obrigatórios. Qualquer variável Boolean. O resultado é um valor Boolean que indica se o string satisfaz ou não pattern.

string
Obrigatórios. Qualquer expressão de String .

pattern
Obrigatórios. Qualquer expressão String de acordo com as convenções de correspondência de padrão descritas em "Comentários."

Comentários

Se o valor em string satisfizer o padrão contido em pattern, result será True. Se a string não satisfizer o padrão, result será False. Se string e pattern forem cadeias de caracteres vazias, o resultado será True.

Método de comparação

O comportamento do operador Likedepende da Instrução Option Compare. O método de comparação de cadeia de caracteres padrão para cada arquivo de origem é Option Compare Binary.

Opções de padrão

Os padrões correspondentes internos fornecem uma ferramenta versátil para comparações de cadeia de caracteres. Os recursos de padrões correspondentes permitem que você faça a correspondência de cada caractere em string com um caractere específico, curinga, uma lista de caracteres ou um intervalo deles. A tabela a seguir mostra os caracteres permitidos em pattern e os respectivos correspondentes.

Caracteres em pattern Correspondências em string
? Qualquer caractere único
* Zero ou mais caracteres
# Qualquer dígito único (de 0 a 9)
[charlist] Qualquer caractere único em charlist
[!charlist] Qualquer caractere único que não esteja em charlist

Listas de caracteres

Um grupo de um ou mais caracteres (charlist) entre colchetes ([ ]) pode ser usado para corresponder a qualquer caractere único em string e pode incluir praticamente qualquer código de caractere, incluindo dígitos.

Um ponto de exclamação (!) no início de charlist significa que uma correspondência é feita se qualquer caractere exceto aqueles em charlist for encontrado em string. Quando usado entre colchetes externos, o ponto de exclamação corresponde a si mesmo.

Caracteres Especiais

Para corresponder aos colchete esquerdo de caracteres especiais ([), ponto de interrogação (?), sinal de número (#) e asterisco (*), coloque-os entre colchetes. O colchete direito (]) não pode ser usado dentro de um grupo para corresponder a si mesmo, mas pode ser usado fora de um grupo como um caractere individual.

A sequência de caracteres [] é considerada uma cadeia de caracteres de comprimento zero (""). No entanto, ele não pode fazer parte de uma lista de caracteres entre colchetes. Se você quiser verificar se uma posição em string contém um de um grupo de caracteres ou nenhum deles, você pode usar Like duas vezes. Para obter um exemplo, confira Como fazer a correspondência de uma cadeia de caracteres com um padrão.

Intervalos de caracteres

Usando um hífen () para separar os limites inferior e superior do intervalo, charlist pode especificar um intervalo de caracteres. Por exemplo, [A–Z] resultará em uma correspondência se a posição do caractere correspondente em string contiver qualquer caractere dentro do intervalo AZ, e [!H–L] resultará em uma correspondência se a posição do caractere correspondente contiver qualquer caractere fora do intervalo HL.

Quando você especifica um intervalo de caracteres, eles devem aparecer em ordem de classificação crescente, ou seja, do mais baixo ao mais alto. Assim, [A–Z] é um padrão válido, mas [Z–A] não é.

Vários intervalos de caracteres

Para especificar vários intervalos para a mesma posição de caractere, coloque-os dentro dos mesmos colchetes sem delimitadores. Por exemplo, [A–CX–Z] resultará em uma correspondência se a posição do caractere correspondente em string contiver qualquer caractere dentro do intervalo AC ou do intervalo XZ.

Uso do Hífen

Um hífen () pode aparecer no início (após um ponto de exclamação, se houver) ou no final de charlist para corresponder a si mesmo. Em qualquer outro local, o hífen identifica um intervalo de caracteres delimitado pelos caracteres em cada lado dele.

Sequência de agrupamento

O significado de um intervalo especificado depende da ordem dos caracteres em tempo de execução, conforme determinado por Option Compare e da configuração de localidade do sistema em que o código está sendo executado. Com Option Compare Binary, o intervalo [A–E] corresponde a A, B, C, D e E. Com Option Compare Text, [A–E] ele corresponde a A, a, À, à, B, b, C, c, D, d, E e e. O intervalo não corresponde a Ê ou ê porque os caracteres acentuados são agrupados após os caracteres não acentuados na ordem de classificação.

Caracteres de dígrafo

Em alguns idiomas, há caracteres alfabéticos que representam dois caracteres separados. Por exemplo, várias linguagens usam o caractere æ para representar a e e quando eles aparecem juntos. O operador Like reconhece que o caractere de dígrafo único e os dois caracteres individuais são equivalentes.

Quando uma linguagem que usa um caractere de dígrafo é especificada nas configurações de localidade do sistema, uma ocorrência do caractere de dígrafo único em um pattern ou string corresponde à sequência equivalente de dois caracteres na outra cadeia de caracteres. Da mesma forma, um caractere de dígrafo em pattern entre colchetes (por si só, em uma lista ou em um intervalo) corresponde à sequência equivalente de dois caracteres em string.

Sobrecarga

O operador Like pode ser sobrecarregado, o que significa que uma classe ou estrutura pode redefinir seu comportamento quando um operando tem o tipo dessa classe ou estrutura. Se o código usar esse operador em uma classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, confira Procedimentos de operador.

Exemplo

Este exemplo usa o operador Like para comparar cadeias de caracteres com vários padrões. Os resultados entram em uma variável Boolean que indica se cada cadeia de caracteres satisfaz o padrão.

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*"

Confira também