从特定字符开始从Array中删除条目

时间:2014-12-18 17:06:53

标签: vb.net arraylist lastindexof

我有一个数组列表,我需要修改它以摆脱包含句点和更早的单词开头的所有条目。

例如:

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(意味着无法找到)

如何获取带有句点的条目索引?

2 个答案:

答案 0 :(得分:1)

LastIndexOf返回特定元素的索引。如果列表包含或不包含作为参数传递的元素,则contains会返回TrueFalse。按照您的示例,arrayList.contains(".")返回False,因为列表中没有任何元素是"。&#34 ;;然后arrayList.LastIndexOf(false)返回-1,因为列表中的所有元素都不是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)

(未经测试,但应该开展工作)

答案 1 :(得分: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