VBA以特殊字符

时间:2018-05-16 22:54:29

标签: vba ms-word

我想查看字符串是以特殊字符开头还是以特殊字符结尾

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 :(得分:2)

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

答案 1 :(得分:1)

使用VB Like operator检查字符串是否以字母数字字符开头和结尾:

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

答案 2 :(得分:0)

如果您不需要为不同的语言或其他原因更改特殊字符的定义,那么您只需检查有效字符列表中的第一个和最后一个字符是否有效。

    var current;
    var currentIndex = 0;

    const getSessions = () => {
     loginService.getUser().then((response) => {
      var user_id = response.data.id;
      console.log("getUser returning this => ", response.data);
      loginService.getUserSessions(user_id).then((response) => {
        $scope.sessions = response.data;
        current = $scope.sessions[0]
      })
     })
    };

    getSessions();

    $scope.nextPage = function() {
      if ( currentIndex < ($scope.sessions.length - 1) ) {
        currentIndex++;
        current = $scope.sessions[currentIndex]
      }
    }

    $scope.prevPage = function (){
      if ( currentIndex > 0 ) {
        currentIndex--;
        current = $scope.sessions[currentIndex]
      }
    }