Operador Like (Visual Basic)Like Operator (Visual Basic)

Compara uma cadeia de caracteres com um padrão.Compares a string against a pattern.

Importante

No momento, o operador de Like não tem suporte no .NET Core e .NET Standard projetos.The Like operator is currently not supported in .NET Core and .NET Standard projects.

SintaxeSyntax

result = string Like pattern  

PartesParts

result
Necessária.Required. Qualquer variável Boolean.Any Boolean variable. O resultado é um valor Boolean indicando se o string satisfaz ou não o pattern.The result is a Boolean value indicating whether or not the string satisfies the pattern.

string
Necessária.Required. Qualquer expressão de String .Any String expression.

pattern
Necessária.Required. Qualquer expressão de String que esteja de acordo com as convenções de correspondência de padrões descritas em "Comentários".Any String expression conforming to the pattern-matching conventions described in "Remarks."

ComentáriosRemarks

Se o valor em string satisfizer o padrão contido em pattern, result será True.If the value in string satisfies the pattern contained in pattern, result is True. Se a cadeia de caracteres não atender ao padrão, result será False.If the string does not satisfy the pattern, result is False. Se string e pattern forem cadeias de caracteres vazias, o resultado será True.If both string and pattern are empty strings, the result is True.

Método de comparaçãoComparison Method

O comportamento do operador de Like depende da instrução Option Compare.The behavior of the Like operator depends on the Option Compare Statement. O método de comparação de cadeia de caracteres padrão para cada arquivo de origem é Option Compare Binary.The default string comparison method for each source file is Option Compare Binary.

Opções de padrãoPattern Options

A correspondência de padrões internos fornece uma ferramenta versátil para comparações de cadeias de caracteres.Built-in pattern matching provides a versatile tool for string comparisons. Os recursos de correspondência de padrões permitem que você corresponda a cada caractere em string em um caractere específico, um caractere curinga, uma lista de caracteres ou um intervalo de caracteres.The pattern-matching features allow you to match each character in string against a specific character, a wildcard character, a character list, or a character range. A tabela a seguir mostra os caracteres permitidos em pattern e o que eles correspondem.The following table shows the characters allowed in pattern and what they match.

Caracteres em patternCharacters in pattern Correspondências no stringMatches in string
? Qualquer caractere únicoAny single character
* Zero ou mais caracteresZero or more characters
# Qualquer dígito único (0 a 9)Any single digit (0–9)
[charlist] Qualquer caractere único no charlistAny single character in charlist
[!charlist] Qualquer caractere único que não esteja em charlistAny single character not in charlist

Listas de caracteresCharacter Lists

Um grupo de um ou mais caracteres (charlist) entre colchetes ([ ]) pode ser usado para corresponder a qualquer caractere único em string e pode incluir quase qualquer código de caractere, incluindo dígitos.A group of one or more characters (charlist) enclosed in brackets ([ ]) can be used to match any single character in string and can include almost any character code, including digits.

Um ponto de exclamação (!) no início de charlist significa que uma correspondência será feita se qualquer caractere, exceto os caracteres em charlist, for encontrado em string.An exclamation point (!) at the beginning of charlist means that a match is made if any character except the characters in charlist is found in string. Quando usados fora dos colchetes, o ponto de exclamação corresponde a si mesmo.When used outside brackets, the exclamation point matches itself.

Caracteres especiaisSpecial Characters

Para coincidir com os caracteres especiais colchetes à esquerda ([), ponto de interrogação (?), sinal de número (#) e asterisco (*), coloque-os entre colchetes.To match the special characters left bracket ([), question mark (?), number sign (#), and asterisk (*), enclose them in brackets. O colchete direito (]) não pode ser usado em um grupo para corresponder a si mesmo, mas pode ser usado fora de um grupo como um caractere individual.The right bracket (]) cannot be used within a group to match itself, but it can be used outside a group as an individual character.

A sequência de caracteres [] é considerada uma cadeia de caracteres de comprimento zero ("").The character sequence [] is considered a zero-length string (""). No entanto, ele não pode fazer parte de uma lista de caracteres entre colchetes.However, it cannot be part of a character list enclosed in brackets. 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.If you want to check whether a position in string contains one of a group of characters or no character at all, you can use Like twice. Para obter um exemplo, consulte como fazer a correspondência de uma cadeia de caracteres em relação a um padrão.For an example, see How to: Match a String against a Pattern.

Intervalos de caracteresCharacter Ranges

Usando um hífen () para separar os limites inferior e superior do intervalo, charlist pode especificar um intervalo de caracteres.By using a hyphen () to separate the lower and upper bounds of the range, charlist can specify a range of characters. Por exemplo, [A–Z] resultará em uma correspondência se a posição de caractere correspondente em string contiver qualquer caractere dentro do intervalo AZe [!H–L] resultar em uma correspondência se a posição do caractere correspondente contiver qualquer caractere fora do intervalo HL.For example, [A–Z] results in a match if the corresponding character position in string contains any character within the range AZ, and [!H–L] results in a match if the corresponding character position contains any character outside the range 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.When you specify a range of characters, they must appear in ascending sort order, that is, from lowest to highest. Portanto, [A–Z] é um padrão válido, mas [Z–A] não é.Thus, [A–Z] is a valid pattern, but [Z–A] is not.

Vários intervalos de caracteresMultiple Character Ranges

Para especificar vários intervalos para a mesma posição de caractere, coloque-os dentro dos mesmos colchetes sem delimitadores.To specify multiple ranges for the same character position, put them within the same brackets without delimiters. Por exemplo, [A–CX–Z] resultará em uma correspondência se a posição de caractere correspondente em string contiver qualquer caractere dentro do intervalo AC ou o intervalo XZ.For example, [A–CX–Z] results in a match if the corresponding character position in string contains any character within either the range AC or the range XZ.

Uso do hífenUsage of the Hyphen

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.A hyphen () can appear either at the beginning (after an exclamation point, if any) or at the end of charlist to match itself. Em qualquer outro local, o hífen identifica um intervalo de caracteres delimitado pelos caracteres em ambos os lados do hífen.In any other location, the hyphen identifies a range of characters delimited by the characters on either side of the hyphen.

Sequência de agrupamentoCollating Sequence

O significado de um intervalo especificado depende da ordenação de caracteres em tempo de execução, conforme determinado pelo Option Compare e pela configuração de localidade do sistema em que o código está sendo executado.The meaning of a specified range depends on the character ordering at run time, as determined by Option Compare and the locale setting of the system the code is running on. Com Option Compare Binary, o intervalo [A–E] corresponde a A, B, C, De E.With Option Compare Binary, the range [A–E] matches A, B, C, D, and E. Com Option Compare Text, [A–E] corresponde a A, a, À, à, B, b, C, c, D, d, Ee e.With Option Compare Text, [A–E] matches A, a, À, à, B, b, C, c, D, d, E, and e. O intervalo não corresponde a Ê ou ê porque os caracteres acentuados se agrupam após caracteres não acentuados na ordem de classificação.The range does not match Ê or ê because accented characters collate after unaccented characters in the sort order.

Caracteres digrafoDigraph Characters

Em alguns idiomas, há caracteres alfabéticos que representam dois caracteres separados.In some languages, there are alphabetic characters that represent two separate characters. Por exemplo, várias linguagens usam o caractere æ para representar os caracteres a e e quando aparecem juntos.For example, several languages use the character æ to represent the characters a and e when they appear together. O operador Like reconhece que o caractere dígrafo único e os dois caracteres individuais são equivalentes.The Like operator recognizes that the single digraph character and the two individual characters are equivalent.

Quando um idioma que usa um caractere dígrafo é especificado nas configurações de localidade do sistema, uma ocorrência do caractere digraph único em pattern ou string corresponde à seqüência de dois caracteres equivalente na outra cadeia de caracteres.When a language that uses a digraph character is specified in the system locale settings, an occurrence of the single digraph character in either pattern or string matches the equivalent two-character sequence in the other string. Da mesma forma, um caractere digrafo em pattern entre colchetes (por si só, em uma lista ou em um intervalo) corresponde à sequência de dois caracteres equivalente em string.Similarly, a digraph character in pattern enclosed in brackets (by itself, in a list, or in a range) matches the equivalent two-character sequence in string.

SobrecargaOverloading

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.The Like operator can be overloaded, which means that a class or structure can redefine its behavior when an operand has the type of that class or structure. Se o seu código usar esse operador em uma classe ou estrutura desse tipo, certifique-se de entender seu comportamento redefinido.If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. Para obter mais informações, consulte procedimentos de operador.For more information, see Operator Procedures.

ExemploExample

Este exemplo usa o operador Like para comparar cadeias de caracteres com vários padrões.This example uses the Like operator to compare strings to various patterns. Os resultados entram em uma variável Boolean indicando se cada cadeia de caracteres satisfaz o padrão.The results go into a Boolean variable indicating whether each string satisfies the pattern.

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émSee also