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/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
22: Enum (0) | 2021.05.12 |
---|---|
21.1: 배열의 내용을 주어진 값만큼 shift rotate 시키는 generic 메소드 예제 (0) | 2021.05.10 |
20.11: IEnumerable<> 인스턴스로의 배열 (0) | 2021.05.10 |
20.10: 배열 공변성 (covariance) (0) | 2021.05.01 |
20.9: 가변 배열 (Jagged array) (0) | 2021.04.30 |