我想知道是否有一种确定某个数组元素范围是否为空的方法。例如,如果使用值为“”的10个元素初始化数组,那么如果数据稍后被分配给元素5,7,9;我可以测试元素0-3是否为空,或者是否包含空字符串“”?
答案 0 :(得分:5)
array.Skip(startIndex).Take(count).All(x => string.IsNullOrEmpty(x));
所以,如果你想检查元素0-3:
array.Skip(0).Take(4).All(x => string.IsNullOrEmpty(x));
为清楚起见,我将Skip
留在那里。
编辑:根据Jonathan在另一个答案中的评论(而现在是Guffa在我的评论中所说的那样),使其成为Take(4)
而不是3。)。
编辑2:根据以下评论,OP希望了解是否匹配任何元素:
array.Skip(0).Take(4).Any(x => string.IsNullOrEmpty(x));
已将All
更改为Any
。
答案 1 :(得分:3)
bool is0to3empty = myArrayOfString.Skip(0).Take(4).All(i => string.IsNullOrEmpty(i));
答案 2 :(得分:2)
最直接和最有效的方法是简单地遍历数组的那一部分:
bool empty = true;..
for (int i = 0; i <= 3; i++) {
if (!String.IsNullOrEmpty(theArray[i])) {
empty = false;
break;
}
}
if (empty) {
// items 0..3 are empty
}
另一种选择是使用扩展方法来进行循环:
bool empty = theArray.Take(4).All(String.IsNullOrEmpty);
答案 3 :(得分:1)
创建此扩展类,您可以从任何字符串数组中调用它:
public static class IsEmptyInRangeExtension
{
public static bool IsEmptyInRange(this IEnumerable<string> strings, int startIndex, int endIndex)
{
return strings.Skip(startIndex).TakeWhile((x, index) => string.IsNullOrEmpty(x) && index <= endIndex).Count() > 0;
}
}