Like (operatore) (Visual Basic)

Confronta una stringa con un modello.

Importante

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

Sintassi

result = string Like pattern  

Parti

result
Obbligatorio. Qualsiasi variabile Boolean. Il risultato è un valore Boolean che indica se string soddisfa o meno pattern.

string
Obbligatorio. Qualsiasi espressione String .

pattern
Obbligatorio. Qualsiasi espressione String conforme alle convenzioni sui 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 sia string che pattern sono stringhe vuote, il risultato è True.

Metodo di confronto

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 del modello

I criteri di ricerca predefiniti offrono uno strumento versatile per il confronto tra stringhe. Le funzionalità di criteri di ricerca 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 relative corrispondenze.

Caratteri in pattern Corrispondenze in string
? Un solo carattere
* 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 del 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 all'esterno delle parentesi quadre, il punto esclamativo trova una corrispondenza con se stesso.

Caratteri speciali

Per trovare la corrispondenza con i caratteri speciali parentesi quadra sinistra ([), punto interrogativo (?), cancelletto (#) e asterisco (*), racchiuderli tra parentesi quadre. La parentesi quadra destra (]) non può essere usata all'interno di un gruppo per trovare la corrispondenza con se stessa, 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: Confrontare una stringa con un modello.

Intervalli di caratteri

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

Quando si specifica un intervallo di caratteri, questi devono essere visualizzati in ordine crescente, ovvero dal più piccolo al più grande. 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, [A–CX–Z] restituisce una corrispondenza se la posizione del carattere corrispondente in string contiene qualsiasi carattere all'interno dell'intervallo A-C o dell'intervallo X-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 da Option Compare e dalle impostazioni locali del sistema in cui è in esecuzione il codice. Con Option Compare Binary, l'intervallo [A–E] corrisponde a A, B, C, D e E. Con Option Compare Text, [A–E] corrisponde a A, a, À, à, B, b, C, c, D, d, E e e. L'intervallo non corrisponde a Ê o ê perché i caratteri accentati vengono confrontati dopo i caratteri non accentati nell'ordine.

Caratteri digrafici

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

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

Overload

L'operatore Like può essere sottoposto a overload, il che significa che una classe o una struttura può ridefinirne il suo comportamento quando un operando ha il tipo di tale classe o struttura. Se il codice usa questo operatore in una classe o 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 variabile Boolean 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*"

Vedi anche