经典 ASP - 尝试在另一个字符串变量中搜索字符串。 (替代 InStr 函数)

Classic ASP - Trying to search a string in another string variable. (Alternative to InStr function)

在下面的代码中currentregion = 'BC'Regions = 'ABC'.

我试图在 Regions 中找到 currentregion,通常它应该命中 else,因为 if 条件是 false

但它 returns true 因为 InStr 搜索字符串的一部分而不是字符串 vs 字符串。所以 BC 作为 ABC 的一部分,它进入了 if 循环。

Classic ASP 中是否有一个函数,我可以将字符串与字符串进行比较,但不能像 InStr 函数那样比较字符串的一部分。

RegionSQL = "SELECT * FROM Regions Where Auth <= " & Session("U_Auth") & ";"                
Set rsRegion=Server.CreateObject("recordset")
rsRegion.Open RegionSQL,TheDB

If NOT rsRegion.EOF And NOT rsRegion.BOF Then
    rsRegion.MoveFirst
    While Not rsRegion.Eof 
        'Grab Current Region
        currentregion = rsRegion("RegionCodeShort")   

        If InStr(Regions,currentregion) > 0 Then
            checked = "checked"
        Else
            checked = ""
        End If

Regular expressions的经典任务:

Private Sub CommandButton1_Click()
    MsgBox (find("ABC", "(ABC)")) ' exist
    MsgBox (find("BC", "(ABC)")) ' not exist
End Sub

Function find(aString As String, ByVal pattern As String) As Boolean
    Dim regEx As Object
    Set regEx = CreateObject("vbscript.regexp")

    Dim newArray() As String
    Dim cnt As Integer
    regEx.pattern = pattern
    regEx.IgnoreCase = True
    regEx.Global = True

    Set matches = regEx.Execute(aString)
    Dim x As Integer
    x = matches.Count

    If x = 0 Then
        find = False
    Else
        find = True
    End If

End Function

尝试使用

If strcomp(Regions,currentregion,vbTextCompare) = 0 Then

而不是

If InStr(Regions,currentregion) > 0 Then

Split先将字符串放入数组,然后循环比较每个元素