如何删除数组中的空元素?

时间:2016-02-09 19:48:57

标签: c# arrays linq

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

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);
    }
}

5 个答案:

答案 0 :(得分:7)

您可以尝试使用Linq

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

您还必须在命名空间中包含此内容:

using System.Linq;

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

你无法真正&#34;删除&#34;数组中的元素,因为数组大小是固定的 * 。但是,您可以构造一个跳过所有空元素的新数组:

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

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

* 为了完全公开,.NET确实有an API that lets you modify array size,但你不应该在这种情况下使用它。

答案 3 :(得分:1)

如果您正在使用数组,则需要将有效值拉出并将它们放入数组的新实例中。你可以这样做:

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;
    }

答案 4 :(得分:0)

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

尝试以下:

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);
   }
}