Condividi tramite


Operatore Like (Visual Basic)

Confronta una stringa con un criterio.

Importante

L'operatore Like non è attualmente supportato nei progetti .NET Core e .NET Standard.

Sintassi

result = string Like pattern  

Parti

result
Obbligatorio. Qualsiasi Boolean variabile. Il risultato è un Boolean valore che indica se l'oggetto soddisfa o meno l'oggetto stringpattern.

string
Obbligatorio. Qualsiasi String espressione.

pattern
Obbligatorio. Qualsiasi String espressione conforme alle convenzioni di criteri di ricerca descritte in "Osservazioni".

Osservazioni:

Se il valore in string soddisfa il criterio contenuto in pattern, result è True. Se la stringa non soddisfa il criterio, result è False. Se e stringpattern sono stringhe vuote, il risultato è True.

Comparison, metodo

Il comportamento dell'operatore Like dipende dall'istruzione Option Compare. Il metodo di confronto delle stringhe predefinito per ogni file di origine è Option Compare Binary.

Opzioni modello

I criteri di ricerca predefiniti offrono uno strumento versatile per i confronti tra stringhe. Le funzionalità di corrispondenza dei criteri consentono di trovare la corrispondenza di ogni carattere in string rispetto a un carattere specifico, a un carattere jolly, a un elenco di caratteri o a un intervallo di caratteri. Nella tabella seguente vengono illustrati i caratteri consentiti in pattern e le corrispondenze.

Caratteri in pattern Corrispondenze in string
? Qualsiasi carattere singolo
* Zero o più caratteri
# Qualsiasi cifra singola (0-9)
[charlist] Qualsiasi carattere singolo in charlist
[!charlist] Qualsiasi carattere singolo non in charlist

Elenchi di caratteri

Un gruppo di uno o più caratteri (charlist) racchiusi tra parentesi quadre ([ ]) può essere usato per trovare la corrispondenza con qualsiasi singolo carattere in string e può includere quasi qualsiasi codice carattere, incluse le cifre.

Un punto esclamativo (!) all'inizio di charlist indica che viene eseguita una corrispondenza se qualsiasi carattere tranne i caratteri in charlist viene trovato in string. Se utilizzato tra parentesi quadre esterne, il punto esclamativo corrisponde a se stesso.

Caratteri speciali

Per trovare la corrispondenza con i caratteri speciali tra parentesi quadre ([), punto interrogativo (?), segno di numero (#) e asterisco (*), racchiuderli tra parentesi quadre. La parentesi quadra destra (]) non può essere usata all'interno di un gruppo per trovare la corrispondenza, ma può essere usata all'esterno di un gruppo come singolo carattere.

La sequenza [] di caratteri è considerata una stringa di lunghezza zero (""). Tuttavia, non può far parte di un elenco di caratteri racchiuso tra parentesi quadre. Se si desidera verificare se una posizione in string contiene uno di un gruppo di caratteri o nessun carattere, è possibile usare Like due volte. Per un esempio, vedere Procedura: Associare una stringa a un criterio.

Intervalli di caratteri

Usando un trattino () per separare i limiti inferiori e superiori dell'intervallo, charlist è possibile specificare un intervallo di caratteri. Ad esempio, restituisce [A–Z] una corrispondenza se la posizione del carattere corrispondente in string contiene qualsiasi carattere compreso nell'intervallo –Z e [!H–L] restituisce una corrispondenza se la posizione del carattere corrispondente contiene qualsiasi carattere al di fuori dell'intervallo AHL.

Quando si specifica un intervallo di caratteri, questi devono essere visualizzati in ordine crescente, ovvero dal più basso al più alto. Pertanto, [A–Z] è un modello valido, ma [Z–A] non lo è.

Intervalli di caratteri multipli

Per specificare più intervalli per la stessa posizione dei caratteri, inserirli all'interno delle stesse parentesi quadre senza delimitatori. Ad esempio, restituisce [A–CX–Z] una corrispondenza se la posizione del carattere corrispondente in string contiene qualsiasi carattere all'interno dell'intervallo ,C o l'intervallo AX-Z .

Utilizzo del trattino

Un trattino () può essere visualizzato all'inizio (dopo un punto esclamativo, se presente) o alla fine di charlist per corrispondere a se stesso. In qualsiasi altra posizione, il trattino identifica un intervallo di caratteri delimitato dai caratteri su entrambi i lati del trattino.

Sequenza di confronto

Il significato di un intervallo specificato dipende dall'ordinamento dei caratteri in fase di esecuzione, come determinato dall'impostazione Option Compare delle impostazioni locali del sistema in cui è in esecuzione il codice. Con Option Compare Binary, l'intervallo [A–E] corrisponde a A, BC, D, e E. Con Option Compare Text, [A–E] corrisponde Aa , ÀàaB, b, C, DdcEe .e L'intervallo non corrisponde Ê o ê perché i caratteri accentati vengono compressi dopo caratteri non accentati nell'ordinamento.

Caratteri digrafi

In alcune lingue sono presenti caratteri alfabetici che rappresentano due caratteri separati. Ad esempio, diverse lingue usano il carattere æ per rappresentare i caratteri a e e quando vengono visualizzati insieme. L'operatore Like riconosce che il singolo carattere digrafo e i due singoli caratteri sono equivalenti.

Quando viene specificata una lingua che utilizza un carattere digrafo nelle impostazioni locali di sistema, un'occorrenza del carattere digrafo singolo in pattern o string corrisponde alla sequenza di due caratteri equivalente nell'altra stringa. Analogamente, un carattere digrafo racchiuso pattern tra parentesi quadre (da solo, in un elenco o in un intervallo) corrisponde alla sequenza di due caratteri equivalente in string.

Sovraccarico

L'operatore Like può essere sottoposto a overload, il che significa che una classe o una struttura può ridefinirne il comportamento quando un operando ha il tipo di tale classe o struttura. Se il codice usa questo operatore in una classe o una struttura di questo tipo, assicurarsi di comprenderne il comportamento ridefinito. Per altre informazioni, vedere Operator Procedures.

Esempio

In questo esempio viene usato l'operatore Like per confrontare le stringhe con vari modelli. I risultati vengono inseriti in una Boolean variabile che indica se ogni stringa soddisfa il criterio.

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 anche