devxlogo

Non obvious uses for the LIKE operator

Non obvious uses for the LIKE operator

LIKE is probably the VB operator is most underutilized if compared to its potential. The most immediate use for this operator is to check that a string begins or ends with a given pattern. For example, it is simple to check that a Product ID is made up by a alphabetic character followed by three digits:

If ProductID Like "[A-Za-z][0-9][0-9][0-9]" Then Print "OK"' this is equivalment, because "#" stands for a digitIf ProductID Like "[A-Za-z]###" Then Print "OK"

But there are other cases when LIKE can be very useful. For example, you can check that a string contains only alphabetical characters using by transforming the condition into “check that the string doesn’t contain any non-alphabetical character”, as follows:

If Not ProductID Like "*[!A-Z]*" Then Print "OK"

Similarly, you can check that a string contains only digits with:

If Not ProductID Like "*[!0-9]*" Then Print "OK"

The following statement checks that a string doesn’t contain any symbol (which means it contains only alpha-numeric characters):

If Not ProductID Like "*[!A-Za-z0-9]*" Then Print "OK"

The following statement checks that a string follows the rules for a valid VB variable name, that is is an alphabetic char followed by an alphanumeric character:

' VarName contains the string to testIf VarName like "[A-Za-z]*" And Not Mid$(VarName, 2) Like "*[!A-Z_a-z0-9]*" _    Then Print "OK"

The following statement checks that a string contains at least two spaces (consecutive or not):

If TestString Like "* * *" Then Print "OK"

while the following test ensures that the two spaces are not consecutive:

If TestString Like "* ?* *" Then Print "OK"

Checking a signed integer is more complicated, because you must account for the leading sign and must provide the correct number of “#” symbols:

' NumValue contains the string to testIf NumValue Like "#" Or (Len(NumValue) > 1 And NumValue Like "[-+0-9]" & _    String$(Len(NumValue) - 1, "#")) Then Print "OK" 

Finally, the following line checks whether NumValue contains a signed decimal value. In this case we must ensure that there is an (optional) leading sign, that there is only one (optional) decimal separator, and all the other characters are digits:

' NumValue contains the string to testIf NumValue Like "#" Or (Len(NumValue) > 1 And Left$(NumValue, _    1) Like "[-+.0-9]" And Not Mid$(NumValue, 2) Like "*[!.0-9]*" And Not _    NumValue Like "*.*.*" ) Then Print "OK" 

See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist