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返回True或者列表False是否包含作为参数传递的元素。按照您的示例,返回是因为列表中的所有元素都不是“。”;然后返回 -1 因为列表的所有元素都不是.arrayList.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

为什么选择数组列表?如果您使用 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 回答