【问题标题】:How do I remove all null or empty elements from my array in vb.net?如何从 vb.net 中的数组中删除所有 null 或空元素?
【发布时间】:2021-01-31 15:29:35
【问题描述】:

代码块计算两个速度值; Vsf 和 Vro 使用它们对应的参数值:for 循环语句的每次迭代的角度、超高和半径。在每个循环期间,它选择两个速度值中的最小值。在某些情况下,角度、超高,但最重要的是,半径都是空值,导致 Vsf 和 Vro 值为空,因此 Vmin 为空。我想消除这些情况,只为 Vmin 生成非零值,因此我的问题是。

         For i = 1 To CInt(txtNumSections.Text)
                ReDim Preserve Vsf(i)
                ReDim Preserve Vro(i)
                ReDim Preserve Vmin(i)

                Vsf(i) = (((0.91544 - 0.00166 * Angle(i) - 0.000002 * W - 0.054248 * Superelevation(i) - Sidefrictionfactor) / 0.013939) * Radius(i)) ^ 0.5
                Vro(i) = (((1.05653 - 0.004861 * Angle(i) - 0.000004 * W - 0.314653 * Superelevation(i) - rolloverthreshold) / 0.012729) * Radius(i)) ^ 0.5
                Vmin(i) = Math.Min(Vsf(i), Vro(i))
                If Vmin(i) <= "0" Then
                    Vmin(i) = "0"
                End If
            Next

            Dim myList = New List(Of Double)
            For Each s In Vmin
                If Not String.IsNullOrWhiteSpace(s) Then
                    myList.Add(s)
                End If
            Next
            Vmin = myList.ToArray()

【问题讨论】:

  • 什么样的数组?
  • 你应该使用Option Strict On,因为它会指出像Vmin(i) = "0"这样的类型错误。

标签: arrays vb.net


【解决方案1】:

由于数组是不可变的(您不能添加或删除项目),您可以重新创建它:

myArray = myArray.Where(Function(s) Not String.IsNullOrEmpty(s)).ToArray()

这是一个String(),但此 LINQ 查询与任何其他类型的数组类似。

非 LINQ 方法是填写 List(of T),然后使用 ToArray

Dim myList = New List(Of String)
For Each s In myArray
    If Not String.IsNullOrEmpty(s)
        myList.Add(s)
    End If
Next
myArray = myList.ToArray()

您会发现 LINQ 可以使您的代码更具可读性和可理解性。

【讨论】:

  • 感谢@Tim Schmelter,我已经尝试了这两种方法,但是当我运行程序并查看数组时,在本地窗口中,我发现它仍然包含空值,就像以前一样。跨度>
  • 你确定它们是空的吗?也许您需要修剪?
  • @DaVince294:可能它们不是null和空而是包含空格,然后使用String.IsNullOrWhiteSpace
  • @Tim Schmelter,我尝试了你的新建议,但它仍然产生空值。让我修改问题并包含相关的代码部分。也许您可能会看到我做错了但似乎看不到的事情。请看上面
  • 好的,伙计们,我找到了一个解决方法,基于代码片段的目的。我只是将所有空值或负值设置为最大允许值。有一些上下文使它成为一种明智的方法,但我需要解释代码块的整个操作,我相信这会让你感到厌烦。无论如何,感谢您的贡献。非常感谢他们。
【解决方案2】:

好的,伙计们,我根据代码片段的目的找到了解决方法。我只是将所有空值或负值设置为最大允许值。它有一些上下文使它成为一种明智的方法,但我需要解释代码块的整个操作,我不确定你是否会对它感兴趣。无论如何,感谢你的贡献。非常感谢他们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2019-06-03
    • 2016-12-08
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多