使用VB6.0查找数组索引
Posted
技术标签:
【中文标题】使用VB6.0查找数组索引【英文标题】:Finding Array index using VB6.0 【发布时间】:2014-12-19 07:33:46 【问题描述】:我正在尝试使用 Visual Basic 找出数组索引。我用 VB.Net 尝试了一些代码并获得了正确的输出。下面是我正在使用的代码,
Dim FindThisString as String="EFGH"
Dim MyArray() As String="ABCD","EFGH","IJKLM"
For Each Str As String In MyArray
If Str.Contains(FindThisString) Then
MsgBox(Str.IndexOf(FindThisString))
End If
Next
现在我想用 VB 6.0 尝试同样的方法。我正在使用 Instr 函数,但它给了我整个字符串中的字符串索引,我正在寻找数组索引,即 MyArray 中字符串“EFGH”的索引。
这是我正在尝试的 VB6 代码:
Dim MyString as String
Dim str as Variant
MyString="ABCD/EFGH/IJKLM"
Dim MyArray() as String
MyArray = split(MyString,"/")
Dim inIndex as Integer
For Each Str In MyArray
inIndex= Instr(str,"EFGH")
MsgBox inIndex
Next
【问题讨论】:
也向我们展示您的 VB6 代码。您还必须在 VB6 中遍历数组。 Dim MyString as String Dim str as Variant MyString="ABCD/EFGH/IJKLM" Dim MyArray() as String MyArray = split(MyString,"/") Dim inIndex as Integer For Each str In MyArray inIndex= Instr(str,"EFGH") MsgBox inIndex Next @idstam : 我在尝试 VB6 代码 【参考方案1】:你基本上会使用相同的算法:
循环遍历数组(您需要使用 Variant
作为 VB Classic For Each
的循环变量),
验证数组条目是否包含有问题的子字符串(这里需要使用InStr
,因为VB Classic没有String.Contains
),
返回索引(您已使用InStr
确定)。
实现留作练习。
【讨论】:
嗨 Heinzi.. 我已经通过了你的建议。但是您的解决方案主要用于字符串而不是字符串数组。由于 vb6 中的 Instr 接受两个参数,即 Instr(Stringinto, "Stringtosearch")。但我正在寻找数组索引。 @Mahesh:啊,但是您的 VB.NET 示例代码不返回数组索引:它返回字符串索引! 这就是我的意思。这是我正在尝试的 VB6 代码.. Dim MyString as String Dim str as Variant MyString="ABCD/EFGH/IJKLM" Dim MyArray() as String MyArray = split(MyString,"/") Dim inIndex as Integer For Each Str在 MyArray inIndex= Instr(str,"EFGH") MsgBox inIndex 下一个 @Mahesh:在这种情况下,使用常规的For
循环而不是For Each
循环并返回循环计数器。
感谢您的建议。会尝试相同的,并会通知您。【参考方案2】:
Function IndexOf(ByRef arr() As String, ByVal str As String) As Integer
Dim joinedStr As String
Dim strIndex As Integer
joinedStr = "|" & Join(arr, "|")
strIndex = InStr(1, joinedStr, str)
If strIndex = 0 Then
IndexOf = -1
Exit Function
End If
joinedStr = Mid(joinedStr, 1, strIndex - 1)
IndexOf = UBound(Split(joinedStr, "|")) - 1
End Function
【讨论】:
以上是关于使用VB6.0查找数组索引的主要内容,如果未能解决你的问题,请参考以下文章