如何在包含"?"之后删除我的列表框项目文本? ?
示例列表框项目文本:
I want it ? please, remove it.
我的代码:
For i = 0 To ListBox1.Items.Count - 1 If ListBox1.Items(i).ToString.StartsWith("?") Then 'something useful for me. End If Next
如果我想删除特定文本,请使用它。
For i = 0 To CheckedListBox1.Items.Count - 1
If CheckedListBox1.Items(i).ToString.Contains("something") Then
CheckedListBox1.Items(i) = CheckedListBox1.Items(i).ToString.Replace("something", "")
End If
但它是动态生成的列表框项目。 例如:
I want it ? please, remove it.1234
I want it ? please, remove it.2345
I want it ? please, remove it.64653
I want it ? remove461
etc...
答案 0 :(得分:2)
开始向后循环,然后使用RemoveAt
For i = ListBox1.Items.Count - 1 To 0 Step -1
If ListBox1.Items(i).ToString.StartsWith("?") Then
ListBox1.Items.RemoveAt(i)
End If
Next
如果要从集合中删除一个或多个项目,则从集合的末尾向其第一个元素循环非常重要。如果循环进入正常的前进模式,则在删除项目时可能会出现问题。例如,如果您移除位置5处的项目,则位置6处的项目在位置5处移位,但随后您将循环索引器增加到6,从而有效地跳转您之前在位置6处的项目的逻辑
更新:如果您要删除包含问号的项目,请使用其他方法检查已检查项目中是否存在问号
For i = ListBox1.Items.Count - 1 To 0 Step -1
If ListBox1.Items(i).ToString.Contains("?") Then
ListBox1.Items.RemoveAt(i)
End If
Next
或者,如果你想替换包含问号的当前项目,请在问号后写下这样的文字
For i = ListBox1.Items.Count - 1 To 0 Step -1
If ListBox1.Items(i).ToString.Contains("?") Then
Dim item = ListBox1.Items(i).ToString()
Dim pos = item.IndexOf("?"c)
item = item.Substring(0, pos)
ListBox1.Items(i) = item
End If
Next
最后,如果问号被空格包围,您可以添加TrimEnd
item = item.Substring(0, pos).TrimEnd()