Разбейте строку на отдельные элементы и проверьте тип символа - NUM - LETTER - SPECIAL - Excel VBA - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно выяснить, как я могу проверить каждый символ в строке, чтобы увидеть, является ли он цифрой / буквой / специальным символом.

У меня вопрос, как я могу разбить строку и проверить каждый отдельный символ, чтобы увидеть, является ли символ number/letter/special character

Например:

var = 1S@

Result1 = Num
Result2 = Alpha
Result3 = Special

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Так что я заставил его работать, объединив несколько разных постов в SO.Этот код разбивает строку в массиве, а затем проверяет каждую на наличие num / alpha / special и имеет специальный регистр для *.

-

Sub test()

'''Special Character Section'''
Dim special_charArr() As String
Dim special_char As String

special_char = "!,@,#,$,%,^,&,*,+,/,\,;,:"
special_charArr() = Split(special_char, ",")
'''Special Character Section'''

'''Alpha Section'''
Dim regexp As Object
Set regexp = CreateObject("vbscript.regexp")

Dim strPattern As String
strPattern = "([a-z])"

With regexp
    .ignoreCase = True
    .Pattern = strPattern
End With
'''Alpha Section'''

Dim buff() As String
my_string = "t3s!*"
ReDim buff(Len(my_string) - 1)
For i = 1 To Len(my_string)
    buff(i - 1) = Mid$(my_string, i, 1)
    char = buff(i - 1)
    If IsNumeric(char) = True Then
        MsgBox char & " = Number"
    End If
    For Each Key In special_charArr
     special = InStr(char, Key)
      If special = 1 Then
        If Key <> "*" Then
            MsgBox char & " = Special NOT *"
        Else
            MsgBox char & " = *"
        End If
      End If
    Next
    If regexp.test(char) Then
        MsgBox char & " = Alpha"
    End If
Next
End Sub
0 голосов
/ 04 апреля 2019

Если вы имеете в виду

, экранирующий пользовательский ввод, который должен обрабатываться как литеральная строка в регулярном выражении, что в противном случае было бы ошибочно принято за специальный символ.

Затем вы можете заменить его заданным регулярным выражением:

/[.*+?^${}()|[\]\\]/g
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...