Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4,VB5,VB6
Expertise: Intermediate
Aug 31, 2000

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 digit
If 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 test
If 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 test
If 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 test
If 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" 
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date