2

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

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

3 回答 3

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
于 2012-07-05T15:41:31.833 回答
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) 个元素

于 2012-07-05T15:43:49.133 回答
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)
于 2012-07-05T16:17:15.907 回答