Like operator (LotusScript® Language)
Determines whether a string expression matches a pattern string.
Syntax
stringExpr Like patternString
Elements
stringExpr
Any String expression.
patternString
A string expression that can include any individual ANSI characters and any of the wildcard characters or collections that follow. You can use as many wildcards as you need within a single patternString.
Wildcard |
Matches |
---|---|
? |
Any one character |
# |
Any one digit from 0 through 9 |
* |
Any string (zero or more characters) |
[ characters ] |
Any one of the characters in the list or range specified here |
[! characters ] |
Any one character not included in the list or range of characters specified here |
Matching characters in a list
To match characters in a list, enclose the characters between brackets with no spaces or other delimiters between characters (unless you want the space character to be part of the list). For example, [1, 2, 3, A, B, C] represents the characters 1, comma, space, 2, 3, A, B, and C (the redundant occurrences of the space and comma are ignored). But [123ABC] represents the characters 1, 2, 3, A, B, and C (with no space or comma character).
Matching characters in a range
To match characters in a range, separate the lower and upper bounds with a hyphen, as in [1-5]. Always specify the range in ascending sort order (A-Z rather than Z-A). Sort order is determined by the setting of Option Compare. When you specify multiple ranges, you don't have to separate them with anything: for example, [1-5A-C] contains the ranges 1-5 and uppercase A-C.
If binary comparison (Option Compare Binary) is in effect, LotusScript® uses the international Unicode character collating sequence. This is the sequence of values Uchr(0), Uchr(1), Uchr(2), .... It is the same on all LotusScript® platforms. A range specified in ascending order will produce a valid pattern string. However, if Option Compare Case, NoCase, Pitch, or NoPitch is in effect, then the collating sequence order depends to some extent on the operating system that you are using. It is usually better in any case to avoid ranges for punctuation and other ambiguous characters. For better maintainability and platform-independence, specify the characters you want to match against (for example, "[:;<=>?]") instead of using a range. Also note that you can define ranges by exclusion; to match non-alphanumeric characters, use "[!a-Z0-9]" (in non-binary mode) or "[!A-Za-z0-9]" (in binary mode), instead of trying to list all the non-alphanumeric Unicode characters.
Matching special characters
To match one of these characters, include it in a characters list:
- Hyphen ( - )
- Question mark ( ? )
- Asterisk ( * )
- Number sign ( # )
- Open bracket ( [ )
Be sure to place the hyphen at the beginning of the list; if you're using the [!characters] format, the hyphen immediately follows the exclamation point, as in [!-123]. The other characters can appear anywhere in the characters list. For example, with Option Compare Binary (and therefore the Unicode collation sequence) in effect, [-?A-Z] matches the hyphen, the question mark, and any uppercase letter from A through Z.
To match one of these characters, place the character anywhere within your wildcard specification except in a characters list or range:
- Comma ( , )
- Close bracket ( ] )
- Exclamation mark ( ! )
For example, !,[1-6] matches the exclamation point, the comma, and any digit from 1 through 6.
Return value
If stringExpr matches patternString, the result is TRUE; if not, the result is FALSE. If either stringExpr or patternString is NULL, the result is NULL.
Usage
By default, the comparison is case sensitive. You can modify case sensitivity with the Option Compare statement.
Examples
Example 1
This example prints the two-digit numbers from 1 to 100 that end in 3 and don't begin with 2.
For x = 1 To 100
If CStr(x) Like "[!2]3" Then Print x
Next x
' Output:
' 13 33 43 53 63 73 83 93
Example 2
This example uses Like as a validation formula for city and zip fields.
if doc.city(0) like "*[0-9]*" then messagebox _
"city field contains a number"
if doc.zip(0) like "*[a-z,A-Z]*" then messagebox _
"zip code field contains a character"
Example 3
This example shows some ways you can test a string with Like to see if it contains a given substring:
' Make string comparison case-sensitive.
Option Compare Case
Dim anArray(1 To 6) As String
anArray(1) = "Juan"
anArray(2) = "Joan"
anArray(3) = "Alejandro"
anArray(4) = "Jonathan"
anArray(5) = "Andrea"
anArray(6) = "Jane"
UB% = UBound(anArray)
' Test each name in anArray$ to see if it contains a substring
' consisting of any characters followed by uppercase J
' followed by any characters followed by lowercase n followed
' by any characters.
For counter% = 1 to UB%
If anArray(counter%) Like "*J*n*" Then
Print anArray(counter%) & " " ;
End If
Next
Print ""
' Output: Juan Joan Jonathan Jane
' Test each name in anArray$ to see if it contains
' a numeric character.
badRec% = 0
For counter% = 1 to UB%
If anArray(counter%) Like "*#*" Then
Print anArray(counter%) & " contains a numeral."
badRec% = badRec% + 1
End If
Next
If badRec% = 0 Then
Print "No name contains a numeral."
End If
' Output: No name contains a numeral.
' Test the lowercase representation of each name in anArray$
' to see if it ends in a vowel.
For counter% = 1 to UB%
If anArray(counter%) Like "*[aeiou]" Then
Print anArray(counter%) & " " ;
End If
Next
Print ""
' Output: Alejandro Andrea Jane