我无法让我的测试用例正常运行。
问题在于下面的代码,第一个if语句是准确的。 QTP抱怨需要一个对象
For j=Lbound(options) to Ubound(options)
If options(j).Contains(choice) Then
MsgBox("Found " & FindThisString & " at index " & _
options.IndexOf(choice))
Else
MsgBox "String not found!"
End If
Next
当我检查数组时,我可以看到它已正确填充,'j'也是正确的字符串。 对此问题的任何帮助将不胜感激。
答案 0 :(得分:15)
VBScript中的字符串不是对象,因为它们没有成员函数。应使用InStr
函数来搜索子字符串。
For j=Lbound(options) to Ubound(options)
If InStr(options(j), choice) <> 0 Then
MsgBox("Found " & choice & " at index " & j
Else
MsgBox "String not found!"
End If
Next
答案 1 :(得分:13)
检查字符串数组是否包含值的简明方法是合并Filter和UBound函数:
If Ubound(Filter(options, choice)) > -1 Then
MsgBox "Found"
Else
MsgBox "Not found!"
End If
缺点:您没有获得找到元素的索引
优点:它很简单,您可以使用通常的include和compare参数来指定匹配条件。
答案 2 :(得分:0)
Function CompareStrings ( arrayItems , choice )
For i=Lbound(arrayItems) to Ubound(arrayItems)
' 0 - for binary comparison "Case sensitive
' 1 - for text compare not case sensitive
If StrComp(arrayItems(i), choice , 0) = 0 Then
MsgBox("Found " & choice & " at index " & i
Else
MsgBox "String not found!"
End If
Next
End Function
答案 3 :(得分:0)
@gbonetti-您的代码为以下示例返回“找到”。我认为是因为@Giacomo Lacava提到的原因。
a = Array("18")
If Ubound(Filter(a, "1")) > -1 Then
MsgBox "Found"
Else
MsgBox "Not found!"
End If
答案 4 :(得分:-2)
嗨,如果你检查确切的字符串而不是数组中的子字符串使用StrComb,因为如果使用InStr然后如果array =“apple1”,“apple2”,“apple3”,“apple”和choice =“apple”那么所有将每个数组项的返回传递。
Function CompareStrings ( arrayItems , choice )
For i=Lbound(arrayItems) to Ubound(arrayItems)
' 1 - for binary comparison "Case sensitive
' 0 - not case sensitive
If StrComp(arrayItems(i), choice , 1) = 0 Then
CompareStrings = True
MsgBox("Found " & choice & " at index " & i
Else
CompareStrings = False
MsgBox "String not found!"
End If
Next
End Function