如何删除数组中的空元素

本文关键字:元素 数组 何删除 删除 | 更新日期: 2023-09-27 18:34:05

我有一个电子邮件地址数组,但一个空字符串被注入到数组的末尾。如何在数组中删除此元素?

for(int i = 0; i < allToAddresses.Length; i++)
{
    if(allToAddresses[i] == " ") // find where empty element is
    { //Here i am trying to delete that empty element. does not work
       allToAddresses[i].Split("".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
    }
}

如何删除数组中的空元素

你可以尝试使用 Linq 来实现这一点

allToAddresses = allToAddresses.Where(address=>!string.IsNullOrWhiteSpace(address))
                               .ToArray();

您还必须将其包含在命名空间中:

using System.Linq;

您可以使用 Where 方法筛选初始数组。在此方法中,传递一个谓词,如果对于当前地址为方法字符串,则返回 true。IsNullOrWhiteSpace 返回 false。否则,它将返回 false。使用此过滤器可以丢弃空地址、空地址或仅由空格字符组成。

test =  test.Where(x => !string.IsNullOrWhitepace(x)).ToArray();

您不能真正从数组中"删除"元素,因为数组大小是固定的*。但是,您可以构造一个跳过所有空元素的新数组:

allToAddresses = allToAddresses.Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();

以上需要在文件顶部使用System.Linq。它会检查数组中的所有条目,以查看它们是 null 还是完全由空格(空格、制表符等)组成,并生成一个新的字符串数组,仅包含原始数组中的非空/非空条目。

* 为了完全披露,.NET 确实有一个 API 可以让你修改数组大小,但你不应该在这样的情况下使用它。

如果您使用的是数组,则需要提取有效值并将它们放入数组的新实例中。你可以做这样的事情:

internal static T[] RemoveNullArrayElements<T>(T[] array)
    {
        if (array != null)
        {
            List<T> newLst = new List<T>();
            foreach (var ar in array)
            {
                if (ar != null)
                {
                    newLst.Add(ar);
                }
            }
            return newLst.ToArray();
        }
        return array;
    }
<</div> div class="answers">

问题可能是您正在搜索空格而不是空字符串吗?

请尝试以下操作:

for(int i = 0; i < allToAddresses.Length; i++)
{
   if(allToAddresses[i] == "") // find where empty element is
   { //Here i am trying to delete that empty element. does not work
      allToAddresses[i].Split("".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);
   }
}