VBA начинается с или заканчивается специальным символом - PullRequest
0 голосов
/ 17 мая 2018

Я хочу посмотреть, начинается ли строка со специального символа или заканчивается на

testString("#Testing")     Returns: true
testString("Testing\")     Returns: true
testString("#Testing)")    Returns: true
testString("Tes#ting~")    Returns: true
testString("Tes#ting")     Returns: false
testString("Testing")      Returns: false

Идея состоит в том, чтобы использовать регулярное выражение

Dim rg As Variant
Set rg = CreateObject("VBScript.RegExp")

rg.Pattern = ""

returnFunc = rg.test(paramString)

Однако я не уверен, как создать регулярное выражение для проверки символов.

Все альтернативные решения приветствуются

Так что, если оно начинается или заканчивается чем-то кроме [a-Z] [0-9]

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Если вам не нужно менять определение специальных символов для разных языков или по другим причинам, вы можете просто проверить первый и последний символы по списку допустимых символов.

Public Function testString(text As String)        
    testString = isCharAlphaNumeric(Left(text, 1)) Or isCharAlphaNumeric(Right(text, 1))    
End Function

Public Function isCharAlphaNumeric(char)
    Const valid As String = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    isCharAlphaNumeric = InStr(valid, char) = 0
End Function

Public Sub test()    
    Debug.Print testString("#Testing")   '  Returns: true
    Debug.Print testString("Testing\")   '  Returns: true
    Debug.Print testString("#Testing)")  '  Returns: true
    Debug.Print testString("Tes#ting~")  '  Returns: true
    Debug.Print testString("Tes#ting")   '  Returns: false
    Debug.Print testString("Testing")    '  Returns: false    
End Sub
0 голосов
/ 17 мая 2018

Чтобы проверить, что строка не начинается и не заканчивается буквенно-цифровыми символами, используйте оператор VB Like :

If Not "#Testing" Like "[0-9A-Za-z]*[0-9A-Za-z]" Then MsgBox True

Если строка может содержать менее 2 символов:

If string Like "[!0-9A-Za-z]*" Or string Like "*[!0-9A-Za-z]" Then MsgBox True
0 голосов
/ 17 мая 2018
Function test(x)
    Dim rg As Variant
    Set rg = CreateObject("VBScript.RegExp")

    rg.Pattern = "^([^A-Za-z0-9].*|.*[^A-Za-z0-9])$"

    test = rg.test(x)
End Function

Sub hoi()
    Debug.Print test("#Testing")
    Debug.Print test("Testing\")
    Debug.Print test("#Testing)")
    Debug.Print test("Tes#ting~")
    Debug.Print test("Tes#ting")
    Debug.Print test("Testing")
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...