Arrays VB6:从数组中获取以x开头的字符串

Arrays VB6:从数组中获取以x开头的字符串,arrays,indexing,vb6,Arrays,Indexing,Vb6,假设我有一个数组,arr,它最多包含20个子字符串。在本例中,数组将有4个子字符串: arr={“AAAA:1234567”、“BBBB:2345678”、“CCCC:98765432”、“DDDD:87654321”} 注:资本化并不重要 我需要帮助在数组中查找一个子字符串(同样,最多可能有20个字符串),以CCCC:开头,然后将整个字符串分配给它自己的变量,我们称之为Var1 我知道我可以分配Var1=arr(2),但我需要找出如何确定数组中符合我的条件的索引号 我真正欣赏的是制作一个独立的

假设我有一个数组,
arr
,它最多包含20个子字符串。在本例中,数组将有4个子字符串:

arr={“AAAA:1234567”、“BBBB:2345678”、“CCCC:98765432”、“DDDD:87654321”}

注:资本化并不重要

我需要帮助在数组中查找一个子字符串(同样,最多可能有20个字符串),
CCCC:
开头,然后将整个字符串分配给它自己的变量,我们称之为
Var1

我知道我可以分配
Var1=arr(2)
,但我需要找出如何确定数组中符合我的条件的索引号

我真正欣赏的是制作一个独立的功能,例如:

Function ArrayIndex(ArrayInput as Variant, StartsWith as String) as Byte
   'Arguments Here
End Function
然后我可以在我的子程序中使用这个:

Var1 = arr(ArrayIndex(arr, "CCCC:"))
更新1 下面是我当前代码的一个片段

Sub T_Report
    '<Shortcut = Shift+Ctrl+T>

    Dim Data as String, DataArray as Variant
    With ActiveSession
        .Copy 0, 2, 80, 21  'Just a big block of text with multiple lines, copied to clipboard
        Data = Clipboard    'Set Data to the clipboard value
        DataArray = Split(Data,vbCrLf)  'This is "Data" in an Array, separated by line breaks

        'Just checking to see if the Array was successful (it is) 
        Debug.Print DataArray(0) & vbNL & DataArray(1) & vbNL & DataArray(2) & _
            vbNL & DataArray(3) & vbNL & DataArray(4) & vbNL & vbNL


        'Misc code here


        Dim sF1 as String, sF2 as String, sF3 as String
        Dim Rslt1 as String, Rslt2 as String, Rslt3 as String
        sF1 = "Field1:"
        sF2 = "Field2:"
        sF3 = "Field3:"

        MsgBox DataArray(0)     ' This works fine, giving me first substring
        Rslt1 = FindMyString(sF1, DataArray)

        ' Misc Code

    End With
End Sub
编辑-修复阵列负载

更改此项(它必须给您一个错误!):

arr = {"AAAA: 1234567" , "BBBB: 2345678" , "CCCC: 98765432" , "DDDD: 87654321"}
Dim arr As Variant
arr = Split("AAAA: 1234567,BBBB: 2345678,CCCC: 98765432,DDDD: 87654321", ",")
对此:

arr = {"AAAA: 1234567" , "BBBB: 2345678" , "CCCC: 98765432" , "DDDD: 87654321"}
Dim arr As Variant
arr = Split("AAAA: 1234567,BBBB: 2345678,CCCC: 98765432,DDDD: 87654321", ",")
如果您想使用函数来执行命令,可以使用ParamArray类型传递数据数组。它必须是函数中的最后一个参数

这应该满足您的要求:

Private Function FindMyString(strToFind as string, ParamArray arr() As Variant) As String

   Dim i As Integer
   Dim iLen as Integer
   Dim strArr as String

   FindMyString = "" ' Returns Blank String if not found '

   Debug.Print arr(0)(0) ' Print first element of array

   iLen = Len(strToFind)
   For i = 0 To UBound(arr(0))
      strArr = CStr(arr(0)(i))
      If strToFind = Left$(strArr, iLen) Then
          FindMyString = strArr
          Exit Function
      End If
   Next i

End Function
在您的示例中,您可以通过以下方式进行测试:

Var1 = FindMyString("CCCC:", arr)

您需要使用mid()来获取所需的子字符串,例如:如果mid(arr[0],1,5)=“CCCC:”那么如果它只出现一次,那么对于(i=1到20)来说,如果mid(arr[i],1,5)=“CCCC:”那么返回i@fernando.reyes有正确的方法,但我更喜欢I=LBound(arr)的
,而不是UBound(arr)
。如果有一天阵列最大值更改为21,则无需触摸。如果您的阵列只有5个项目,则可避免错误。对-需要为字符串指定字符串-我将更新代码您设置arary时一定会遇到错误-如果您通过阵列,我怀疑这是您当前的代码-我编辑了我的代码以修复您的错误数组-你应该更新你的问题以显示你当前的代码。无法修复我们看不到的内容。好的-看起来VB将数组更改为0,并在外部使用索引(这可能不是正确的术语)-更新了我的代码谢谢你挂在那里