1

を呼び出すArray.indexOf(input Array,"A")と、入力配列に「A」のインデックスが付けられます。ただし、同様の関数を使用して、入力配列に「A」が複数回出現する場合に、配列内の「A」のすべてのインデックスを取得する方法。

4

3 に答える 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値が割り当てられます= 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 に答える