1

我有一个ArrayHold在运行时填充的大型一维数组。我运行一个循环来扫描数组,以根据几个参数找出需要删除的元素。这一切都很好,现在我剩下两个数组。原始的一个和一个新的,其中包含要删除的元素的位置。

原始数组:

("A")("B")("C")("D")("E")("F")("G")("H")

具有需要删除的元素的索引/计数的第二个数组:

("0")("3")("5")("7")

最终结果最好不在新数组中,而是在原始数组的“ReDim”中:

("B")("C")("E")("G")

实现这一目标的最简单方法是什么?我可以运行一个循环来制作所有需要删除的元素,"0"或者""?是否有一种通过删除/删除所有空白或空元素来调整大小和数组的简单方法?

提前非常感谢.. :)

4

1 回答 1

1

我建议为此使用LINQ,这样您的代码就会变得更具可读性和可维护性。

由于您尚未展示如何过滤第一个数组,因此我假设您要删除所有“A”、“D”、“F”、“H”(区分大小写):

Dim original = {"A", "B", "C", "D", "E", "F", "G", "H"}
    ' remove A,D,F,H
Dim result = (From str In original
              Where Not {"A", "D", "F", "H"}.Contains(str)).ToArray()

结果:

    (0) "B" String
    (1) "C" String
    (2) "E" String
    (3) "G" String

最终结果最好不在新数组中,而是在原始数组的“ReDim”中: ("B")("C")("E")("G")

当然上面创建了一个新数组,但Redim创建了一个新数组。

编辑:这是一个基于索引删除元素的示例,假设您有一个int[]要从第一个数组中删除的所有索引:

Dim deleteIndices = {0, 3, 5, 7}
' remove elements with index 0,3,5,7
Dim result = original.
          Where(Function(str, index) Not deleteIndices.Contains(index)).
          ToArray()
于 2012-06-02T11:41:09.013 回答