【问题标题】:VB - How do you remove "empty" items from a generic list?VB - 如何从通用列表中删除“空”项目?
【发布时间】:2012-10-11 22:27:11
【问题描述】:

我有一个包含通用列表的 VB.NET (2010) 项目,我正在尝试弄清楚如何从列表中删除任何“空”项目。当我说“空”时,我的意思是任何不包含任何实际字符的项目(但它可能包含任意数量的空格,或者根本没有空格)。

例如,假设这是我的清单...

    Dim MyList As New List(Of String)

    MyList.Add("a")
    MyList.Add("")
    MyList.Add("b")
    MyList.Add(" ")
    MyList.Add("c")
    MyList.Add("      ")
    MyList.Add("d")

我需要它,以便如果我对该列表进行计数,它将返回 4 个项目,而不是 7 个。例如...

    Dim ListCount As Integer = MyList.Count
    MessageBox.Show(ListCount) ' Should show "4"

如果有类似的东西就好了……

    MyList.RemoveEmpty

无论如何...在过去的几个小时里,我一直在 Google 上寻找解决方案,但到目前为止还没有找到任何解决方案。那么...有什么想法吗?

顺便说一句,我的目标是这个项目的 .NET 2.0 框架。

提前致谢!

【问题讨论】:

  • 您需要保留“空”项目以备后用,还是希望将它们永久删除?
  • 永久删除会很棒。

标签: vb.net


【解决方案1】:

您可以使用List.RemoveAll

MyList.RemoveAll(Function(str) String.IsNullOrWhiteSpace(str))

如果您至少不使用 .NET 4,则不能使用 String.IsNullOrWhiteSpace。然后就可以自己实现方法了:

Public Shared Function IsNullOrWhiteSpace(value As String) As Boolean
    If value Is Nothing Then
        Return True
    End If
    For i As Integer = 0 To value.Length - 1
        If Not Char.IsWhiteSpace(value(i)) Then
            Return False
        End If
    Next
    Return True
End Function

请注意,Char.IsWhiteSpace 从 1.1 开始就存在。

【讨论】:

  • Gah 被打得​​更厉害了,不得不查一下 VB.net :)
  • 不过,我认为您可以通过在代码字体中使用 List.RemoveAll 获得奖励积分。
  • 感谢您的快速回复,伙计们。但是当我将该行粘贴到程序中时,出现以下错误...“IsNullOrWhiteSpace”不是字符串的成员。有什么想法吗?
  • 谢谢蒂姆。我刚刚添加了该功能,但仍然遇到相同的错误。我完全按照你写的方式粘贴了所有内容。也许我需要替换该代码中的任何内容吗?感谢您的帮助!
  • 我想通了。对于“RemoveAll”这一行,我将其更改为 --> MyList.RemoveAll(Function(str) IsNullOrWhiteSpace(str)) 再次感谢蒂姆……你帮了大忙!
猜你喜欢
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多