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

Here's The Code:
' 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
view raw charchecker.vb hosted with ❤ by GitHub

Komentar