0

ピリオド以前を含む単語から始まるすべてのエントリを削除するために変更する必要がある配列リストがあります。

例えば ​​:

arrayList(0)= My
arrayList(1)= Name
arrayList(2) = Is
arrayList(3) = David.
arrayList(4) = How
arrayList(5) = Are

arrayList(0-3) を削除する必要があります

私は使用してみました:

dim pIndex = arrayList.LastIndexOf(arraylist.contains("."))
arrayList.RemoveRange(0,pIndex)

pIndex=-1 を返すだけです (見つからないことを意味します)。

ピリオドのあるエントリのインデックスを取得するにはどうすればよいですか?

4

2 に答える 2

1

LastIndexOf特定の要素のインデックスを返します。または、パラメータとして渡す要素がリストに含まれているかどうかをcontains返します。あなたの例に従って、リストのどの要素も「。」ではないため、戻ります。リストのどの要素も ではないため、 は -1を返します。TrueFalsearrayList.contains(".")FalsearrayList.LastIndexOf(false)False

リストを反復処理する必要があります。

arrayList(0) = "My"
arrayList(1) = "Name"
arrayList(2) = "Is"
arrayList(3) = "David."
arrayList(4) = "How"
arrayList(5) = "Are"

Dim pIndex As Integer
For pIndex = arrayList.Capacity - 1 To 0 Step -1
    If arrayList(pIndex).ToString.Contains(".") Then Exit For
Next

If pIndex <> -1 Then arrayList.RemoveRange(0, pIndex + 1)

(テストされていませんが、動作するはずです)

于 2014-12-18T17:23:00.520 に答える
1

ArrayList を使用する理由 List(Of String) を使用する場合は、より優れたツールを自由に使用できます。

    Dim L As New List(Of String)
    L.Add("My")
    L.Add("Name")
    L.Add("Is")
    L.Add("David.")
    L.Add("How")
    L.Add("Are")

    Dim index As Integer = L.FindLastIndex(Function(x)
                                               Return x.Contains(".")
                                           End Function)
    If index <> -1 Then
        L.RemoveRange(0, index + 1)
    End If

    For i As Integer = 0 To L.Count - 1
        Debug.Print(i & ": " & L(i))
    Next
于 2014-12-18T17:28:32.370 に答える