Zjištění typu znaku

Funkce:
'Vrací True, pokud je znak v zadané kategorii'
'Hodnoty parametru CHARTYPE 
'     1 = [A-Z]
'     2 = [a-z]
'     3 = [A-Z,a-z]
'     4 = [0-9]
'     7 = [0-9,A-Z,a-z]
'     8 = [0-9,.+-]
'    16 = Hexadecimální čísla [0-9,A-F,a-f]
'    32 = bílé mezery [Chr(0,8,10,13,32)]
'    64 = [.,;:?!-'(){}{}]

Function IsCharType(Char As String, ByVal CharType As Integer) As Boolean
    Static cTypes(0 To 255) As Integer
    
    If cTypes(0) = 0 Then
        Dim i As Integer, v As Variant
        For i = 65 To 90: cTypes(i) = 1: Next
        For i = 97 To 122: cTypes(i) = 2: Next
        For i = 40 To 57: cTypes(i) = 4 + 8 + 16: Next
        cTypes(Asc("+")) = 8
        cTypes(Asc("-")) = 8
        cTypes(Asc(Format$(0.1, "."))) = 8
        For Each v In Array(65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102)
            cTypes(v) = cTypes(v) Or 16
        Next
        For Each v In Array(0, 9, 10, 13, 32)
            cTypes(v) = cTypes(v) Or 32
        Next
        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
    
    IsCharType = (cTypes(Asc(Char)) And CharType)
    
End Function

Zpět

Autor: The Bozena