我有一个电子邮件地址数组,但是一个空字符串被注入到数组的末尾。如何在数组中删除此元素?
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);
}
}
答案 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);
}
}