Ton*_*Nam 5 c# arrays comparison
可能重复:
byte []数组模式搜索
假设我有一个字节数组:
byte[] myArray = new byte[]{1,2,3,4,5,6,7,1,9,3,4,3,4,7,6,5,6,7,8};
Run Code Online (Sandbox Code Playgroud)
如何确定myArray是否按顺序包含字节9,3,4,3?我必须迭代数组,将每个元素附加到一个字符串然后使用String.Contains()方法来知道该字节数组是否包含该顺序的元素?
我知道我可以这样做:
String s = "";
foreach(byte b in myArray)
{
s = s + b.ToString();
}
//then do
s.Contains("9343")
Run Code Online (Sandbox Code Playgroud)
这不适用于长阵列.什么是更有效的方法呢?
请尝试以下方法
public static bool ContainsSequence(byte[] toSearch, byte[] toFind) {
for (var i = 0; i + toFind.Length < toSearch.Length; i++) {
var allSame = true;
for (var j = 0; j < toFind.Length; j++) {
if (toSearch[i + j] != toFind[j]) {
allSame = false;
break;
}
}
if (allSame) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)