调用Array.indexOf(input Array,"A")
给出了输入数组中“A”的索引。但是如果“A”在输入数组中出现多次,如何使用类似的函数获取数组中“A”的所有索引。
问问题
242 次
3 回答
3
int[] indexes = input.Select((item, index) => new { item, index })
.Where(x => x.item == "A")
.Select(x => x.index)
.ToArray();
于 2012-09-24T10:00:36.880 回答
0
Array
您可以在课堂上使用以下方法
public static int FindIndex<T>(
T[] array,
int startIndex,
Predicate<T> match)
它搜索从 startIndex 开始到最后一个元素结束的数组。
但是,它应该在循环中使用,并且在每次下一次迭代中startIndex
都会被分配一个 value = previousIndexFound + 1
。当然,如果这小于数组的长度。
于 2012-09-24T10:03:42.490 回答
0
Array
您可以像这样为类编写扩展方法:
public static List<Int32> IndicesOf<T>(this T[] array, T value)
{
var indices = new List<Int32>();
Int32 startIndex = 0;
while (true)
{
startIndex = Array.IndexOf<T>(array, value, startIndex);
if (startIndex != -1)
{
indices.Add(startIndex);
startIndex++;
}
else
{
break;
}
}
return indices;
}
使用示例:
var symbols = new Char[] { 'a', 'b', 'c', 'a' };
var indices = symbols.IndicesOf('a');
indices.ForEach(index => Console.WriteLine(index));
于 2012-09-24T10:16:24.127 回答