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 A
–Z
, e resulta em uma correspondência se a posição de caractere correspondente contiver qualquer caractere [!H–L]
fora do intervalo H
–L
.
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 A
–C
ou do intervalo X
–Z
.
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 A
a , a
[A–E]
, , à
À
, B
, b
, C
, c
, d
D
E
, 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 pattern
string
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*"