お世話になります。
主題の通りなのですが、配列から配列を検索する手法、または直接的なメソッドを探しています。
現在はとりあえず以下のようなコードで実現していますが、よりよい方法があればぜひお教えください。
また、C#に限らず他の言語でも、「この言語なら一行で書ける」等ございましたらお聞かせください。
lang
1// 拡張メソッド定義 2public static class IEnumerableExtensions 3{ 4 public static int IndexOf<T>(this IEnumerable<T> source, IList<T> list) 5 { 6 if (list == null || list.Count == 0) return -1; 7 8 int index = 0; 9 foreach (T item in source) 10 { 11 if (item != null && item.Equals(list[0])) 12 { 13 // 最初の1要素が一致したら切り出して比較 14 var part = source.Skip(index).Take(list.Count); 15 if (part.SequenceEqual(list)) return index; 16 } 17 ++index; 18 } 19 return -1; 20 } 21}
lang
1var sentence = "Lorem ipsum dolor sit amet, consectetur adipisicing elit".Select(Convert.ToByte); 2byte[] searchBytes = { 0x6f, 0x6c }; // 'o', 'l' 3Console.WriteLine(sentence.IndexOf(searchBytes)); // ==> 13
回答の取得に失敗しました