我有一个 For Each 循环,它遍历字符串数组以查找长度为三个字符的第一个字符串。例如,在遍历数组时,如果前 3 个字符串是数组的第 4 个索引,我希望它返回数组的第 3 个(前一个)索引。任何帮助,将不胜感激。
For Each piece As String In p
If piece.Length = 3 Then
'Return previous index
End If
Next
你有几个选择。
如果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
像这样的东西怎么样:
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) 个元素
我会使用.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)