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*"