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,VBS
Expertise: Intermediate
Apr 14, 2001

IsCharType - Check whether a character is alphabetic, a digit, a space, etc.

' Return True if a character belongs to a given catagory
'
' CHARTYPE can be the sum of one or more of the following values
'     1 = Uppercase alpha char [A-Z]
'     2 = Lowercase alpha char [a-z]
'     3 = Alpha char [A-Z,a-z]
'     4 = decimal digit [0-9]
'     7 = alphanumeric char [0-9,A-Z,a-z]
'     8 = decimal digit or decimal separator or sign [0-9,.+-]
'    16 = Hexadecimal digit [0-9,A-F,a-f]
'    32 = white space [Chr(0,8,10,13,32)]
'    64 = punctuation symbols [.,;:?!-'(){}{}]

Function IsCharType(Char As String, ByVal CharType As Integer) As Boolean
    Static cTypes(0 To 255) As Integer
    
    ' init the array only the first time
    If cTypes(0) = 0 Then
        Dim i As Integer, v As Variant
        ' uppercase chars
        For i = 65 To 90: cTypes(i) = 1: Next
        ' lowercase chars
        For i = 97 To 122: cTypes(i) = 2: Next
        ' digits belogs to 3 categories
        For i = 40 To 57: cTypes(i) = 4 + 8 + 16: Next
        ' other chars in decimal numbers
        cTypes(Asc("+")) = 8
        cTypes(Asc("-")) = 8
        cTypes(Asc(Format$(0.1, "."))) = 8   ' dec separator
        ' other chars in hex numbers
        For Each v In Array(65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102)
            cTypes(v) = cTypes(v) Or 16
        Next
        ' white space
        For Each v In Array(0, 9, 10, 13, 32)
            cTypes(v) = cTypes(v) Or 32
        Next
        ' punctuation symbols
        For Each v In Array(46, 44, 59, 58, 63, 33, 45, 39, 40, 41, 123, 125)
            cTypes(v) = cTypes(v) Or 64
        Next
    End If
    
    ' returning a value is now very simple
    IsCharType = (cTypes(Asc(Char)) And CharType)
    
End Function
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap