程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#實現byte[]搜索

C#實現byte[]搜索

編輯:C#入門知識

還是比較簡單的功能,在data的byte數組搜索pattern出現的位置。當然這裡可以對該功能進行擴展,例如實現忽略大小寫,並防止異常情況等等。


        public static List<int> indexOf(byte[] data, byte[] pattern)
        {
            List<int> matchedPos = new List<int>();

            if (data.Length == 0 || data.Length < pattern.Length) return matchedPos;

            int end = data.Length - pattern.Length;
            bool matched = false;

            for (int i = 0; i <= end; i++)
            {
                for (int j= 0; j < pattern.Length || !(matched = (j==pattern.Length)); j++)
                {
                    if (data[i + j] != pattern[j]) break;
                }
                if (matched)
                {
                    matched = false;
                    matchedPos.Add(i);
                }
            }
            return matchedPos;
        }

返回的結果是一個List<int>,如果其大小為0,則說明搜索失敗。

這裡留意內側for(;;)的用法,通常判斷到結尾時會認為正確並置相應的Boolean值,考慮到“||”的旁路,即只有在內側for的“||”左邊為False時才會執行右邊的語句,於是我在右邊語句中實現Boolean值的重置,然後再判斷該位置是否匹配。

    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved