2

文字列の配列をループして3文字の長さの最初の文字列を見つけるForEachループがあります。たとえば、配列をループするときに、最初の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 に答える