Operador Like (Visual Basic)

Compara uma cadeia de caracteres com um padrão.

Importante

Atualmente, Like o operador não é suportado em projetos .NET Core e .NET Standard.

Sintaxe

result = string Like pattern  

Partes

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

string
Obrigatório. Qualquer String expressão.

pattern
Obrigatório. Qualquer String expressão em conformidade com as convenções de correspondência de padrões descritas em "Observações".

Observações

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

Método de comparação

O comportamento do Like operador depende da instrução Option Compar. 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

A correspondência de padrões integrada fornece uma ferramenta versátil para comparações de cadeias de caracteres. Os recursos de correspondência de padrões permitem que você faça a correspondência entre cada caractere e string um caractere específico, um caractere curinga, uma lista de caracteres ou um intervalo de caracteres. A tabela a seguir mostra os caracteres permitidos e pattern o que eles correspondem.

Personagens em pattern Jogos em string
? Qualquer caractere único
* Zero ou mais caracteres
# Qualquer dígito (0–9)
[charlist] Qualquer caractere único em charlist
[!charlist] Qualquer caractere único que não esteja em charlist

Listas de Personagens

Um grupo de um ou mais caracteres (charlist) entre parênteses ([ ]) pode ser usado para corresponder a qualquer caractere e string pode incluir quase qualquer código de caracteres, incluindo dígitos.

Um ponto de exclamação (!) no início de charlist significa que uma correspondência é feita se qualquer caractere, exceto os caracteres em charlist é encontrado em string. Quando usado fora dos parênteses, o ponto de exclamação corresponde a si mesmo.

Caracteres especiais

Para corresponder aos caracteres especiais entre parênteses esquerdos ([), ponto de interrogação (?), sinal numérico (#) e asterisco (*), coloque-os entre parênteses. 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, não pode fazer parte de uma lista de caracteres entre parênteses. Se você quiser verificar se uma posição em string contém um de um grupo de caracteres ou nenhum caractere, você pode usar Like duas vezes. Para obter um exemplo, consulte Como fazer corresponder uma cadeia de caracteres a 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] resulta em uma correspondência se a posição de caractere correspondente em string contém qualquer caractere dentro do intervalo AZ, e resulta em uma correspondência se a posição de caractere correspondente contiver qualquer caractere [!H–L] 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 para o 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 caracteres, coloque-os entre colchetes sem delimitadores. Por exemplo, [A–CX–Z] resulta em uma correspondência se a posição de caractere correspondente em string contém 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 do charlist para corresponder a si mesmo. Em qualquer outro local, o hífen identifica um intervalo de caracteres delimitado pelos caracteres em ambos os lados do hífen.

Seqüência de agrupamento

O significado de um intervalo especificado depende da ordenação de 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, corresponde Aa , a[A–E] , , àÀ, B, b, C, c, dDE, e .e O intervalo não corresponde Ê ou ê porque os caracteres acentuados se agrupam após caracteres não acentuados na ordem de classificação.

Caracteres Dígrafos

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

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

Sobrecarga

O Like operador pode estar 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 seu código usa esse operador em tal classe ou estrutura, certifique-se de entender seu comportamento redefinido. Para obter mais informações, consulte Procedimentos do operador.

Exemplo

Este exemplo usa o Like operador para comparar cadeias de caracteres com vários padrões. Os resultados vão para uma Boolean variável que indica se cada string 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*"

Consulte também