Search an array in an array

Searching an array in an array is common.  It would be nice to have a function like String.IndexOf(string) for arrays.  This can be easily achieved by the following extension method of array:

public static class Extensions

    {
        /// <summary>
        /// Reports the index of the first occurrence of the specified array in this instance of array.
        /// </summary>
        /// <typeparam name="T">Type</typeparam>
        /// <param name="aSelf">array itself</param>
        /// <param name="aTarget">search target array</param>
        /// <returns></returns>
        public static int IndexOf<T>(this T[] aSelf, T[] aTarget)
        {
            int iReturn = -1;
            if (aSelf.Length >= aTarget.Length)
            {
                for (int i = 0; i <= aSelf.Length - aTarget.Length; i++)
                {
                    bool bMatch = true;
                    for (int j = 0; j < aTarget.Length; j++)
                    {
                        if (!aSelf[i + j].Equals(aTarget[j]))
                        {
                            //end the loop as soon as there is a mismatch
                            bMatch = false;
                            break;
                        }
                    }
                    if (bMatch)
                    {
                        //end the search as soon as there is a match
                        iReturn = i;
                        break;
                    }
                }
            }
            return iReturn;
        }
    }

This article was updated on 21:47:22 2024-02-27