6

テストケースを正しく実行するのに問題があります。

問題は以下のコードにあります。正確には最初の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」も正しい文字列であることがわかります。この問題についての助けをいただければ幸いです。

4

4 に答える 4

16

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
于 2012-08-09T11:35:06.653 に答える
15

文字列の配列に値が含まれているかどうかを確認する簡潔な方法は、Filter関数とUBound関数を組み合わせることです。

If Ubound(Filter(options, choice)) > -1 Then
    MsgBox "Found"
Else
    MsgBox "Not found!"
End If

短所:要素が見つかったインデックスを取得できません

長所:それは単純であり、一致基準を指定するための通常のインクルードおよび比較パラメーターがあります。

于 2014-09-03T04:09:14.187 に答える
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
于 2014-01-21T13:58:58.083 に答える
-1

こんにちは、配列のサブ文字列ではなく正確な文字列をチェックする場合は、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
于 2014-01-21T13:05:04.377 に答える