如何删除字符串数组中的空值
像 { ,-2,3, ,-4,+5, ,66...}
我需要删除它们之间的那些空值并重新调整数组的大小
我不想使用列表
我不想创建一个新数组
请让我知道是否可以使用简单的代码。谢谢你。
如何删除字符串数组中的空值
像 { ,-2,3, ,-4,+5, ,66...}
我需要删除它们之间的那些空值并重新调整数组的大小
我不想使用列表
我不想创建一个新数组
请让我知道是否可以使用简单的代码。谢谢你。
不,不创建新数组是不可能的。您无法调整数组的大小。
您可以轻松地创建一个没有空字符串和空引用的新数组,如下所示:
string[] items = new string[] { "", "-2", "3", null, "-4", "+5", null, "66" };
items = items.Where(s => !String.IsNullOrEmpty(s)).ToArray();
如果您不想创建一个新数组,那么不,这是不可能的。您不能在简单数组中添加或删除项目(如,string[]
)。
完成您想要实现的目标(如果您删除第二个要求)的最直接方法是:
srcArray
)设置为新数组正如 Dan 所说,您不能在Array
. 但是,您可以使用 LINQ 删除这些值并生成第二个数组。
originalArray = originalArray.Where(s => !string.IsNullOrEmpty(s)).ToArray()
可能不是最高效的解决方案,但......
array.Where(s => s != null).ToArray();
它将创建一个新数组,但我想不出一个不会的解决方案。
在决定如何继续之前,您确实需要考虑谁拥有对您正在操作的数组的引用。
如果数组没有被任何其他代码引用(作为类的成员,作为 lambda 中的捕获变量,或者在某个集合中),那么您不必担心创建新数组。在那种情况下,我会使用@Codesleuth或@Guffa建议的东西。
但是,如果可能存在其他包含对同一数组的引用的代码 - 那么您就不走运了,除非您可以安全地识别和更新在这些其他地方保存的引用。这是一件很难做到的事情- 你应该非常小心,假设你总是可以更新所有其他保存引用的地方。
我是这里唯一一个会扫描数组并将成员移回 NULL 的人,因此会制作一个连续的非空列表。
这不会创建一个新数组,而且实现起来很简单,重要的是要知道您可以在数组周围移动条目。
不幸的是,我正在工作,因此无法提供完整的代码,但是您可以通过在数组中搜索 NULL 然后将数组中的剩余项向上移动一个来实现它。继续这样做直到结束。我建议在搜索完成后清除剩余的整体。
string[] _array= new string[] { "", "z", "d", null, "a", "b", null, "66" };
// select non-null elements only
_array= _array.Where(a => !String.IsNullOrEmpty(a)).ToArray();