Like (operatore) (Visual Basic)Like Operator (Visual Basic)

Confronta una stringa con un modello.Compares a string against a pattern.

Importante

L'operatore Like non è attualmente supportato nei progetti .NET Core e .NET Standard.The Like operator is currently not supported in .NET Core and .NET Standard projects.

SintassiSyntax

result = string Like pattern  

PartiParts

result
Obbligatoria.Required. Qualsiasi variabile Boolean.Any Boolean variable. Il risultato è un valore Boolean che indica se il string soddisfa o meno il pattern.The result is a Boolean value indicating whether or not the string satisfies the pattern.

string
Obbligatoria.Required. Qualsiasi espressione String .Any String expression.

pattern
Obbligatoria.Required. Qualsiasi espressione String conforme alle convenzioni dei criteri di ricerca descritte in "osservazioni".Any String expression conforming to the pattern-matching conventions described in "Remarks."

NoteRemarks

Se il valore in string soddisfa il modello contenuto in pattern, result è True.If the value in string satisfies the pattern contained in pattern, result is True. Se la stringa non soddisfa il criterio, result viene False.If the string does not satisfy the pattern, result is False. Se sia string che pattern sono stringhe vuote, il risultato è True.If both string and pattern are empty strings, the result is True.

Metodo di confrontoComparison Method

Il comportamento dell'operatore Like dipende dall' istruzione Option Compare.The behavior of the Like operator depends on the Option Compare Statement. Il metodo di confronto tra stringhe predefinito per ogni file di origine è Option Compare Binary.The default string comparison method for each source file is Option Compare Binary.

Opzioni modelloPattern Options

Criteri di ricerca predefiniti fornisce uno strumento versatile per i confronti tra stringhe.Built-in pattern matching provides a versatile tool for string comparisons. Le funzionalità dei criteri di ricerca consentono di associare ogni carattere in string a un carattere specifico, a un carattere jolly, a un elenco di caratteri o a un intervallo di caratteri.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. Nella tabella seguente vengono illustrati i caratteri consentiti in pattern e le relative corrispondenze.The following table shows the characters allowed in pattern and what they match.

Caratteri in patternCharacters in pattern Corrispondenze in stringMatches in string
? Qualsiasi carattere singoloAny single character
* Zero o più caratteriZero or more characters
# Qualsiasi cifra singola (0-9)Any single digit (0–9)
[charlist] Qualsiasi carattere singolo in charlistAny single character in charlist
[!charlist] Qualsiasi carattere singolo non presente in charlistAny single character not in charlist

Elenchi di caratteriCharacter Lists

Un gruppo di uno o più caratteri (charlist) racchiusi tra parentesi quadre ([ ]) può essere usato per trovare la corrispondenza con qualsiasi carattere singolo in string e può includere quasi tutti i codici carattere, incluse le cifre.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.

Un punto esclamativo (!) all'inizio di charlist indica che viene effettuata una corrispondenza se viene trovato un carattere qualsiasi, ad eccezione dei caratteri in charlist 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 viene usato all'esterno delle parentesi quadre, il punto esclamativo corrisponde a se stesso.When used outside brackets, the exclamation point matches itself.

Caratteri specialiSpecial Characters

Per trovare la corrispondenza tra i caratteri speciali ([), il punto interrogativo (?), il simbolo di cancelletto (#) e l'asterisco (*), racchiuderli tra parentesi quadre.To match the special characters left bracket ([), question mark (?), number sign (#), and asterisk (*), enclose them in brackets. La parentesi quadra chiusa (]) non può essere usata all'interno di un gruppo per la corrispondenza, ma può essere usata all'esterno di un gruppo come singolo carattere.The right bracket (]) cannot be used within a group to match itself, but it can be used outside a group as an individual character.

La sequenza di caratteri [] viene considerata una stringa di lunghezza zero ("").The character sequence [] is considered a zero-length string (""). Tuttavia, non può far parte di un elenco di caratteri racchiuso tra parentesi quadre.However, it cannot be part of a character list enclosed in brackets. Se si desidera controllare se una posizione in string contiene uno di un gruppo di caratteri o nessun carattere, è possibile utilizzare Like due volte.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. Per un esempio, vedere procedura: trovare la corrispondenza di una stringa con un modello.For an example, see How to: Match a String against a Pattern.

Intervalli di caratteriCharacter Ranges

Utilizzando un trattino () per separare i limiti inferiore e superiore dell'intervallo, charlist possibile specificare un intervallo di caratteri.By using a hyphen () to separate the lower and upper bounds of the range, charlist can specify a range of characters. Ad esempio, [A–Z] restituisce una corrispondenza se la posizione del carattere corrispondente in string contiene un carattere compreso nell'intervallo AZe [!H–L] restituisce una corrispondenza se la posizione del carattere corrispondente contiene un carattere non compreso nell'intervallo 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 si specifica un intervallo di caratteri, questi devono essere visualizzati in ordine crescente, ovvero dal più basso al più alto.When you specify a range of characters, they must appear in ascending sort order, that is, from lowest to highest. Pertanto, [A–Z] è un modello valido, ma [Z–A] non lo è.Thus, [A–Z] is a valid pattern, but [Z–A] is not.

Più intervalli di caratteriMultiple Character Ranges

Per specificare più intervalli per la stessa posizione del carattere, inserirli all'interno delle stesse parentesi quadre senza delimitatori.To specify multiple ranges for the same character position, put them within the same brackets without delimiters. Ad esempio, [A–CX–Z] restituisce una corrispondenza se la posizione del carattere corrispondente in string contiene qualsiasi carattere compreso nell'intervallo A-C o nell'intervallo X-Z.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.

Utilizzo del trattinoUsage of the Hyphen

Un trattino () può apparire all'inizio (dopo un punto esclamativo, se presente) o alla fine di charlist per la corrispondenza.A hyphen () can appear either at the beginning (after an exclamation point, if any) or at the end of charlist to match itself. In qualsiasi altra posizione, il segno meno identifica un intervallo di caratteri delimitati dai caratteri su entrambi i lati del segno meno.In any other location, the hyphen identifies a range of characters delimited by the characters on either side of the hyphen.

Sequenza di fascicolazioneCollating Sequence

Il significato di un intervallo specificato dipende dall'ordinamento dei caratteri in fase di esecuzione, come determinato dall'Option Compare e dalle impostazioni locali del sistema in cui è in esecuzione il codice.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. Con Option Compare Binary, l'intervallo [A–E] corrisponde A, B, C, De E.With Option Compare Binary, the range [A–E] matches A, B, C, D, and E. Con Option Compare Text, [A–E] corrisponde 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. L'intervallo non corrisponde Ê o ê perché i caratteri accentati vengono ordinati dopo caratteri non accentati nell'ordinamento.The range does not match Ê or ê because accented characters collate after unaccented characters in the sort order.

Caratteri di digrammaDigraph Characters

In alcune lingue sono presenti caratteri alfabetici che rappresentano due caratteri distinti.In some languages, there are alphabetic characters that represent two separate characters. Ad esempio, diversi linguaggi utilizzano il carattere æ per rappresentare i caratteri a e e quando vengono visualizzati insieme.For example, several languages use the character æ to represent the characters a and e when they appear together. L'operatore Like riconosce che il singolo carattere di digramma e i due caratteri singoli sono equivalenti.The Like operator recognizes that the single digraph character and the two individual characters are equivalent.

Quando nelle impostazioni locali del sistema viene specificata una lingua che usa un carattere digraph, un'occorrenza del singolo carattere di digramma in pattern o string corrisponde alla sequenza di due caratteri equivalente nell'altra stringa.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. Analogamente, un carattere di digramma in pattern racchiuso tra parentesi quadre (di per sé, in un elenco o in un intervallo) corrisponde alla sequenza di due caratteri equivalente nella 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.

OverloadOverloading

L'operatore Like può essere sottoposto a Overload, il che significa che una classe o una struttura può ridefinire il comportamento quando un operando ha il tipo della classe o della struttura.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 il codice usa questo operatore su una classe o una struttura di questo tipo, assicurarsi di comprendere il comportamento ridefinito.If your code uses this operator on such a class or structure, be sure you understand its redefined behavior. Per altre informazioni, vedere Operator Procedures.For more information, see Operator Procedures.

EsempioExample

In questo esempio viene usato l'operatore Like per confrontare le stringhe con i vari modelli.This example uses the Like operator to compare strings to various patterns. I risultati vengono inseriti in una variabile Boolean che indica se ogni stringa soddisfa il modello.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*"

Vedere ancheSee also