Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Vb.net:在一个大字符串中记录模式的多个索引_Arrays_Vb.net_Search_Indexof - Fatal编程技术网

Arrays Vb.net:在一个大字符串中记录模式的多个索引

Arrays Vb.net:在一个大字符串中记录模式的多个索引,arrays,vb.net,search,indexof,Arrays,Vb.net,Search,Indexof,我目前被困在一个项目中,在这个项目中,我得到了一个大的随机字符串,比如:“cafeedbeef”(可能是900多个字符),我必须得到一个模式的多个实例的索引,然后将它们存储到一个动态数组中 我需要模式“EE”的索引,应该是8和18(我想是吧?)。然后我需要将这些索引记录在动态数组中,如“EE_array()” 我发现这个代码: Dim i As Integer = 0 Dim EE_Array() As String Dim SearchWithinThis As Str

我目前被困在一个项目中,在这个项目中,我得到了一个大的随机字符串,比如:“cafeedbeef”(可能是900多个字符),我必须得到一个模式的多个实例的索引,然后将它们存储到一个动态数组中

我需要模式“EE”的索引,应该是8和18(我想是吧?)。然后我需要将这些索引记录在动态数组中,如“EE_array()”

我发现这个代码:

    Dim i As Integer = 0
    Dim EE_Array() As String
    Dim SearchWithinThis As String = "  C   AF   EE   D B EE   F"
    Dim SearchForThis As String = "EE"
    Dim First As Integer = SearchWithinThis.IndexOf(SearchForThis)
    Dim Array(i) = First
然后我重复代码,搜索另一个模式,并将其存储在另一个数组中

这很好,但只是第一次。我需要把它放在一个循环中,让增量I和redim保留数组,使其变大,并继续运行,直到它到达字符串的末尾(我认为是-1)。

尝试以下代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim SearchWithinThis As String = "  C   AF   EE   D B EE   F"
    Dim SearchForThis As String = "EE"

    Dim Indexes As List(Of Integer) = GetIndexes(SearchWithinThis, SearchForThis)

    Dim EE_Array() As Integer = Indexes.ToArray
End Sub

Private Function GetIndexes(ByVal SearchWithinThis As String, ByVal SearchForThis As String) As List(Of Integer)
    Dim Result As New List(Of Integer)

    Dim i As Integer = SearchWithinThis.IndexOf(SearchForThis)

    While (i <> -1)
        Result.Add(i)
        i = SearchWithinThis.IndexOf(SearchForThis, i + 1)
    End While

    Return Result
End Function
Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
以字符串=“C AF EE D B EE F”的形式显示搜索结果
将此搜索设置为String=“EE”
将索引设置为列表(整数)=获取索引(searchWithis,SearchForThis)
Dim EE_数组()为整数=index.ToArray
端接头
私有函数GetIndexes(ByVal SearchWithThis As String,ByVal SearchForThis As String)作为列表(整型)
将结果变暗为新列表(整数)
Dim i As Integer=SearchWithinThis.IndexOf(SearchForThis)
而(i-1)
结果.添加(i)
i=SearchWithinThis.IndexOf(SearchForThis,i+1)
结束时
返回结果
端函数

函数GetIndexes返回包含索引的整数列表

您需要一个循环。看看这个:是的,a循环是唯一的方法。这太完美了。我可以只使用列表,而不必为数组的额外步骤而烦恼。:)但是,如果我搜索say“EE”,然后搜索每个“E”的单个实例,将它们添加到“EE_数组”,会怎么样?目前,我将不得不运行该函数两次,但附加到相同的列表中。是否有一种方法可以导入多个搜索条件?