Section 20.12: 하나의 배열이 다른 배열의 내용을 포함하고 있는지 검사하기

public static class ArrayHelpers { public static bool Contains < T > (this T[] array, T[] candidate) { if (IsEmptyLocate(array, candidate)) return false; if (candidate.Length > array.Length) return false; for (int a = 0; a <= array.Length - candidate.Length; a++) { if (array[a].Equals(candidate[0])) { int i = 0; for (; i < candidate.Length; i++) { if (false == array[a + i].Equals(candidate[i])) break; } if (i == candidate.Length) return true; } } return false; } static bool IsEmptyLocate < T > (T[] array, T[] candidate) { return array == null || candidate == null || array.Length == 0 || candidate.Length == 0 || candidate.Length > array.Length; } }

예제:

byte[] EndOfStream = Encoding.ASCII.GetBytes("---3141592---"); byte[] FakeReceivedFromStream = Encoding.ASCII.GetBytes("Hello, world!!!---3141592---"); if (FakeReceivedFromStream.Contains(EndOfStream)) { Console.WriteLine("Message received"); }
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts