我有一个For Each循环,循环遍历一个字符串数组,以找到长度为三个字符的第一个字符串。例如,当循环遍历数组时,如果前3个字符串是数组的第4个索引,我希望它返回数组的第3个(上一个)索引。任何帮助将不胜感激。
For Each piece As String In p
If piece.Length = 3 Then
'Return previous index
End If
Next
答案 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)