调用 Array.indexOf(input Array,"A")
会在输入数组中给出“A”的索引。但是如果“A”出现多次,则如何获取数组中“A”的所有索引输入数组使用类似的函数。
答案 0 :(得分:3)
int[] indexes = input.Select((item, index) => new { item, index })
.Where(x => x.item == "A")
.Select(x => x.index)
.ToArray();
答案 1 :(得分:0)
您可以使用Array
类
public static int FindIndex<T>(
T[] array,
int startIndex,
Predicate<T> match)
它从startIndex开始搜索数组,并以最后一个元素结束。
但是,它应该在循环中使用,并且在每次下一次迭代中,startIndex
都将被赋值= previousIndexFound + 1
。当然,如果那个数小于数组的长度。
答案 2 :(得分: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));