返回vb.net中的上一个索引?

时间:2012-07-05 15:36:21

标签: vb.net arrays foreach

我有一个For Each循环,循环遍历一个字符串数组,以找到长度为三个字符的第一个字符串。例如,当循环遍历数组时,如果前3个字符串是数组的第4个索引,我希望它返回数组的第3个(上一个)索引。任何帮助将不胜感激。

For Each piece As String In p
        If piece.Length = 3 Then
            'Return previous index
        End If
Next

3 个答案:

答案 0 :(得分:3)

你有几个选择。

如果p是索引可访问的集合(即:IList(Of T)),则可以切换到For循环,并返回当前索引为-1的元素。

否则,您可以将前一项保留在单独的变量中,并在满足条件时将其返回。

Dim lastItem as String
For Each piece As String In p
    If piece.Length = 3 Then
        Return lastItem ' Will return Nothing if this is the first item...
    End If
    lastItem = piece ' Store this for next time
Next

答案 1 :(得分:0)

这样的事情怎么样:

    For i As Integer = 1 To p.Count - 1
        If p(i).Length = 3 Then
            'Return previous index
            Return p(i - 1)
        End If
    Next

注意循环必须从1开始(不是零)否则你可以返回不存在的数组的第(0-1)个元素

答案 2 :(得分:0)

如果您有.FindIndex

,我会使用List(Of T)
Dim i As Integer = p.FindIndex(Function(x) x.Length = 3)

If i > 0 Then
    Dim previous As String = p(i - 1)

    'Do something
End If

如果您有String(),还可以使用Array版本:

Array.FindIndex(Of String)(p, Function(x) x.Length = 3)