Exemplo n.º 1
0
        // เมื่อโยนข้อความที่ต้องการ search พร้อมกับค่าบูลลิน false จะสร้างและกำหนดค่าและข้อมูลต่างๆ
        public void Initialize(string pattern, bool ignoreCase)
        {
            // กำหนดค่า ข้อความที่เราต้องการ search ที่ส่งมาในตัวแปร pattern ให้ตัวแปร pattern ที่เป็น static มีค่าเดียวกันด้วย
            _pattern = pattern;
            // ส่งค่า false มาภายใน ignoreCase ให้ตัวแปร _ignoreCase ที่เป็น static มีค่าเดียวกันด้วย
            _ignoreCase = ignoreCase;

            // (Create multi-stage skip table) เรียก class UnicodeSkipArray
            // โดยส่งความยาวของ string ของข้อความที่ต้องการ search ไปให้ รีเทินค่ากลับมาเป็น array 2 มิติ
            _skipArray = new UnicodeSkipArray(_pattern.Length);
            // ถ้ากำหนดให้ search แบบ non - case sensitive
            if (_ignoreCase)
            {
                // เก็บข้อความจาก pattern ที่เก็บข้อความที่ต้องการ search ไว้ภายในอเรย์ _skipArray
                // โดยคอนเวิตให้เป็นทั้งตัวใหญ่และตัวเล็ก
                for (int i = 0; i < _pattern.Length - 1; i++)
                {
                    _skipArray[Char.ToLower(_pattern[i])] = (byte)(_pattern.Length - i - 1);
                    _skipArray[Char.ToUpper(_pattern[i])] = (byte)(_pattern.Length - i - 1);
                }
            }
            // ถ้ากำหนดให้ search แบบ case sensitive
            else
            {
                // เก็บข้อความจาก pattern ที่เก็บข้อความที่ต้องการ search ไว้ภายในอเรย์ _skipArray
                // โดยไม่คอนเวิตให้เป็นทั้งตัวใหญ่และตัวเล็ก เก็บข้อความเดิมๆของมัน
                for (int i = 0; i < _pattern.Length - 1; i++)
                {
                    _skipArray[_pattern[i]] = (byte)(_pattern.Length - i - 1);
                }
            }
        }
Exemplo n.º 2
0
        // เมื่อโยนข้อความที่ต้องการ search พร้อมกับค่าบูลลิน false จะสร้างและกำหนดค่าและข้อมูลต่างๆ
        public void Initialize(string pattern, bool ignoreCase)
        {
            // กำหนดค่า ข้อความที่เราต้องการ search ที่ส่งมาในตัวแปร pattern ให้ตัวแปร pattern ที่เป็น static มีค่าเดียวกันด้วย
            _pattern = pattern;
            // ส่งค่า false มาภายใน ignoreCase ให้ตัวแปร _ignoreCase ที่เป็น static มีค่าเดียวกันด้วย
            _ignoreCase = ignoreCase;

            // (Create multi-stage skip table) เรียก class UnicodeSkipArray
            // โดยส่งความยาวของ string ของข้อความที่ต้องการ search ไปให้ รีเทินค่ากลับมาเป็น array 2 มิติ
            _skipArray = new UnicodeSkipArray(_pattern.Length);
            // ถ้ากำหนดให้ search แบบ non - case sensitive
            if (_ignoreCase)
            {
                // เก็บข้อความจาก pattern ที่เก็บข้อความที่ต้องการ search ไว้ภายในอเรย์ _skipArray
                // โดยคอนเวิตให้เป็นทั้งตัวใหญ่และตัวเล็ก
                for (int i = 0; i < _pattern.Length - 1; i++)
                {
                    _skipArray[Char.ToLower(_pattern[i])] = (byte)(_pattern.Length - i - 1);
                    _skipArray[Char.ToUpper(_pattern[i])] = (byte)(_pattern.Length - i - 1);
                }
            }
            // ถ้ากำหนดให้ search แบบ case sensitive
            else
            {
                // เก็บข้อความจาก pattern ที่เก็บข้อความที่ต้องการ search ไว้ภายในอเรย์ _skipArray
                // โดยไม่คอนเวิตให้เป็นทั้งตัวใหญ่และตัวเล็ก เก็บข้อความเดิมๆของมัน
                for (int i = 0; i < _pattern.Length - 1; i++)
                    _skipArray[_pattern[i]] = (byte)(_pattern.Length - i - 1);
            }
        }
Exemplo n.º 3
0
    /// <summary>
    /// Initializes this instance to search a new pattern.
    /// </summary>
    /// <param name="pattern">Pattern to search for</param>
    /// <param name="ignoreCase">If true, search is case-insensitive</param>
    public void Initialize(string pattern, bool ignoreCase)
    {
        _pattern    = pattern;
        _ignoreCase = ignoreCase;

        // Create multi-stage skip table
        _skipArray = new UnicodeSkipArray(_pattern.Length);
        // Initialize skip table for this pattern
        if (_ignoreCase)
        {
            for (int i = 0; i < _pattern.Length - 1; i++)
            {
                _skipArray[char.ToLower(_pattern[i])] = (byte)(_pattern.Length - i - 1);
                _skipArray[char.ToUpper(_pattern[i])] = (byte)(_pattern.Length - i - 1);
            }
        }
        else
        {
            for (int i = 0; i < _pattern.Length - 1; i++)
            {
                _skipArray[_pattern[i]] = (byte)(_pattern.Length - i - 1);
            }
        }
    }