我有一个数组列表,我需要修改它以摆脱包含句点和更早的单词开头的所有条目。
例如:
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(意味着无法找到)
如何获取带有句点的条目索引?
答案 0 :(得分:1)
LastIndexOf
返回特定元素的索引。如果列表包含或不包含作为参数传递的元素,则contains
会返回True
或False
。按照您的示例,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