Algorytm wyszukiwania wzorca w tekście

Wyszukiwanie wzorca w tekście źródłowym polega na porównaniu kolejnych znaków wzorca z kolejnymi znakami w tekście przeszukiwanym. Wynik szukania może być wykorzystany do zliczania wystąpienia wzorca, zamiany znalezionych ciągów znaków nowym ciągiem, usunięciem wystąpień wzorca z tekstu itp.

Algorytm naiwny wyszukiwania wzorca w tekście polega na przeglądaniu kolejnych znaków w głównej pętli bazującej na znakach wzorca pętlą wewnętrzną znaków wzorca.

Pętla wewnętrzna działa na znakach wzorca i gdy wystąpi zgodność znaków dochodzi do sumowania zgodności. Jeżeli suma zliczeń jest równa długości wzorca, to oznacza że wzorzec występuje w tekście źródłowym.

Schemat blokowy algorytmu naiwnego wyszukiwania wzorca w tekście

Schemat blokowy algorytmu naiwnego wyszukiwania wzorca w tekście. Visual studio C#

Kod funkcji algorytmu wyszukiwania wzorca w tekście metodą naiwną zapisany w języku C# działający według podanego powyżej schematu blokowego.

Wskazówka:


void szukajWzorca(String tZrodlo,String tWzorzec,TextBox txtWynik)
{
	//wyczyść poprzednie wyniki wystąpień
	txtWynik.Text = "";
	//szuka i zlicza ilość wystąpień wzorca w tekście źródłowym
	//odczytaj długość tekstu źródłowego
	int dt=tZrodlo.Length;
	//odczytaj długość tekstu wzorca
	int dw =tWzorzec.Length;
	//licznik wystapień wzorca
	//wartośc zero oznacza, że wzorzec nie występuje w źródle
	int licznik = 0;
	for (int i = 0; i < dt; i++)
	{
		int j = 0;
		//sparwdzaj i zliczaj wystapienia tych samych sasiednich znakow
		while (j < dw && tZrodlo[i + j] == tWzorzec[j]) j++;
		//jak suma j-otow jest rowna dlugosci wzorca,
		//to oznacza ze wzorzec wystapil
		if (j == dw)
		{
			licznik++;
			txtWynik.AppendText("wzorzec wystąpił po raz: "
								+ licznik.ToString()
								+ " pozycja znaku: "
								+ i.ToString()
								+ Environment.NewLine);
		}
	}
}

Przykładowa aplikacja wykorzystująca algorytm naiwnego wyszukiwania wzorca w tekście

Przykłądowa aplikacja algorytmu naiwnego wyszukiwania wzorca w tekście. Visual studio C#

Pełny kod klasy Form dla formatki utworzonej aplikacji desktopowej

Form1.cs:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _23AlgWyszukiwanieWzorca
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        void szukajWzorca(String tZrodlo,String tWzorzec,TextBox txtWynik)
        {
            //wyczyść poprzednie wyniki wystąpień
            txtWynik.Text = "";
            //szuka i zlicza ilość wystąpień wzorca w tekście źródłowym
            //odczytaj długość tekstu źródłowego
            int dt=tZrodlo.Length;
            //odczytaj długość tekstu wzorca
            int dw =tWzorzec.Length;
            //licznik wystapień wzorca
            //wartośc zero oznacza, że wzorzec nie występuje w źródle
            int licznik = 0;
            for (int i = 0; i < dt; i++)
            {
                int j = 0;
                //sparwdzaj i zliczaj wystapienia tych samych sasiednich znakow
                while (j < dw && tZrodlo[i + j] == tWzorzec[j]) j++;
                //jak suma j-otow jest rowna dlugosci wzorca,
                //to oznacza ze wzorzec wystapil
                if (j == dw)
                {
                    licznik++;
                    txtWynik.AppendText("wzorzec wystąpił po raz: "
                                        + licznik.ToString()
                                        + " pozycja znaku: "
                                        + i.ToString()
                                        + Environment.NewLine);
                }
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            szukajWzorca(textBox1.Text, textBox2.Text, textBox3);
        }
    }
}
Układ okresowy- kod qr
Układ okresowy

Układ okresowy pierwiastków- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Alkomat- wirtualny test kod qr
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Taklarz- olinowanie stałe kod qr
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz