代码之家  ›  专栏  ›  技术社区  ›  Used

如果字符串包含某个子字符串

  •  0
  • Used  · 技术社区  · 8 年前

    在我的函数中,我试图检查某个字符串是否包含某个子字符串。对于非常短的字符串,它工作得很好,但当我有一个带空格的长字符串时,它似乎不再工作了。

    'Linear Fluorescent
    T(1) = "1x4 1l"
    T(2) = "1x4 1l basket"
    T(3) = "1x4 2l"
    
    'CFL
    C(1) = "can- 1 4 pin"
    C(2) = "can- 2 2 pin"
    C(3) = "can- 2 4 pin"
    
    For i = 1 To 3
    If InStr(Fixture, T(i)) >= 1 Then
    
        ERP_Lamp = "Linear Fluorescent"
    
    ElseIf InStr(Fixture, C(i)) >= 1 Then
    
        ERP_Lamp = "Compact Fluorescent"
    
    End If
    Next i
    

    我得到的结果总是:“线性荧光”或0。 我似乎无法获得“紧凑型荧光灯”,即使夹具是“can-1 4针”,它仍然会说是线性荧光灯。

    所以问题是:如何检查我的字符串是否包含在另一个字符串“Fixture”中?

    提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Nathan_Sav    8 年前

    这不是答案,但在测试中对代码进行了重新调整并添加了一些内容,但其本质仍然是您的,并且运行良好。

    Function ERP_Lamp(strFixture As String) As String
    
    Dim t(3) As String
    Dim c(3)   As String
    
    t(1) = "1x4 1l"
    t(2) = "1x4 1l basket"
    t(3) = "1x4 2l"
    
    'CFL
    c(1) = "can- 1 4 pin"
    c(2) = "can- 2 2 pin"
    c(3) = "can- 2 4 pin"
    
    strFixture = LCase(strFixture)
    
    For i = 1 To 3
    
        If InStr(strFixture, LCase(t(i))) >= 1 Then
    
            ERP_Lamp = "Linear Fluorescent"
            Exit For
    
        ElseIf InStr(strFixture, LCase(c(i))) >= 1 Then
    
            ERP_Lamp = "Compact Fluorescent"
            Exit For
    
        End If
    
    Next i
    
    Erase t
    Erase c
    
    End Function