如何删除数组中的空元素
本文关键字:元素 数组 何删除 删除 | 更新日期: 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);
}
}