'Zrobiłem ten program tak jak uważam, że będzie najlepsze połączenie tego co wy potraficie i po prostu rozsądnego wykonania
'Program wyszukuje w tekście podane słowo i zamienia je na inne jednakże:
'UWAGA!!! Program rozpoznaje czy jest to samodzielne słowo czy tylko fragment innego słowa
' np rozróżni czy jest to słowo 'ryj' czy 'wyryjemy'
' Dokonuje się to poprzez sprawdzenie czym jest poprzedni i następny znak po wyszukanym słowie
' Jeżeli tak miało wg ciebie nie być to pisz na maila (cowboy92@wp.pl)
Private Sub btnZamien_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZamien.Click
Dim tekst, znak, t1, t2, poz As String 'tekst, t1, t2 - dane wejściowe, znak - zmienna pomocnicza
Dim p, k, licz, n As Integer 'p - początek analizy tekstu, k - wyszukany prawdopodobny koniec słowa, licz - dana wejściowa, n- długość tekstu
Dim blad, blad2 As Boolean 'blad - czy poprawnie zostały wprowadzone dane do pól, blad2 - czy to faktycznie jest szukane słowo czy tylko fragment innego słowa
Dim znaki = " ,.;:'[]<>-()!?""" 'znaki które są rozpoznawane jako dopuszczalne (nie ma znaczenia czy wyszukamy w tekście słowo " koń " czy np " koń," Aby dodać jakiś znak lub go usunąć wystarczy go uzupełnić, dodać w dowolnym miejscu między tymi cudzysłowami, zwracajmy uwagę jednak że pierwszym dopuszczalnym znakiem jest spacja
'Fragment ustawiania danych początkowych
tekst = txtTekst.Text
t1 = txtT1.Text
t2 = txtT2.Text
licz = 0
poz = ""
p = 1
n = Len(tekst)
blad = False
blad2 = False
'Sprawdzanie poprawności wpisanych danych
If tekst = "" Or t1 = "" Or t2 = "" Then 'Czy pola są niepuste
MsgBox("Jedno lub więcej wymaganych pól nie jest uzupełnionych!")
blad = True
End If
If Not blad And Len(tekst) < 100 Then 'Czy tekst nie jest za krótki
MsgBox("Podany tekst jest za krótki: " & Str(Len(tekst)) & " znaków.")
blad = True
End If
If Not blad And Len(tekst) > 1000 Then 'Czy tekst nie jest za długi
MsgBox("Podany tekst jest za długi: " & Str(Len(tekst)) & " znaków.")
blad = True
End If
If Not blad Then 'Czy nie wystąpił błąd czyli czy wprowadziliśmy poprawne dane wejściowe
Do 'Rozpoczynamy pętlę analizy tekstu
blad2 = False 'Na początku zakładamy że nie było błędu (chyba nawet ten wiersz można wywalić ale niech będzie)
p = InStr(p, tekst, t1) 'Szukamy miejsca gdzie się zaczyna szukane słowo w tekście
If p <> 0 Then 'Jeżeli nie znajdziemy słowa w tekście to p będzie równe 0, jeżeli coś znaleźliśmy to lecimy dalej
k = p + Len(t1) - 1 'za k ustawiamy koniec szukanego słowa
'Tu się rozpoczyna fragment odpowiedzialny za wykrycie czy to faktycznie jest szukane słowo czy tylko fragment innego słowa
If p <> 1 Then 'Jeżeli to nie jest początek całego tekstu to sprawdzamy znak przed znalezionym słowem
znak = Mid(tekst, p - 1, 1) 'Tu wybieramy ten znak
If znaki.Contains(znak) Then 'Tu sprawdzamy czy należo on do znaków dopuszczalnych
'UWAGA!!! wydaje mi się że nie mieliście czegoś takiego jak metoda "Contains"
'mimo że jest bardzo intuicyjna w tym momencie. Można ją jak coś zastąpić równoważnym wierszem: If InStr(1,znaki,znak)<>0 Then
blad2 = False 'Jeżeli znak jest dopuszczalny to nadal się wszystko zgadza
Else
blad2 = True 'Jeżeli nie to znaczy że to nie jest szukane słowo
End If
Else
blad2 = False 'Jeżeli p=1 to znaczy że mamy początek tekstu i nie mamy żadnego znaku przed szukanym słowem
End If
If k <> n And Not blad2 Then 'Tutaj sprawdzamy czy koniec słowa nie jest końcem tekstu i czy już poprzednio nie wykryliśmy, że coś jest nie tak
znak = Mid(tekst, k + 1, 1) 'Wybieramy znak następny po słowie
If znaki.Contains(znak) Then 'Podobnie jak wyżej sprawdzamy czy jest dopuszczalny, znowu ten wiersz też można podmienić
blad2 = False 'Tu ustawiamy że się wszystko zgadza, to jest szukane słowo
Else
blad2 = True 'Tu ustawiamy że to jednak nie jest to czego szukamy
End If
End If
If Not blad2 Then 'Czy nie wystąpił błąd2 czyli czy jest to faktycznie to czego szukamy
licz = licz + 1 'Doliczamy to słowo do puli już znalezionych
If poz = "" Then 'Jeżeli to jest nasze pierwsze znalezione słowo to nie chcemy zaczynać tego od znaku średnika tylko wpiszemy samą wartość
poz = Str(p)
Else 'Jeżeli jest to już kolejne wystąpienie tego słowa to stawiamy średnik i piszemy kolejny wynik na którym miejscu je znaleźliśmy
poz = poz & ";" & Str(p)
End If
tekst = Mid(tekst, 1, p - 1) & t2 & Mid(tekst, k + 1, n - k) 'nasz nowy tekst to: fragment przed znalezieniem słowa + podmienione słowa + fragment za tym słowem
p = p + Len(t2) + 1 'nowy początek szukania kolejnego słowa ustawiamy na pierwszy znak po podmianie
Else
p = p + Len(t1) + 1 'albo jeżeli to nie było jednak szukane słowo to na pierwszy znak po wyszukanym
End If
End If
n = Len(tekst) 'z racji że długość podmienianego słowa może być inna niż długość nowego słowa mogła nam się zmienić długość całego tekstu co musimy uaktualnić
Loop While p <> 0 'pętlę wykonujemy dopóki znajdujemy kolejne słowa na podmianę
lblLicz.Text = Str(licz) 'Jeżeli już nie znajdujemy kolejnych słów to wyświetlamy dane, tutaj ilość znalezionych słów
lblPoz.Text = poz 'Tutaj pozycje znalezionych słów (uwaga - te pozycje są zgodne z tekstem wprowadzonym, a nie z tekstem wynikowym po podmianach)
If chkWyswietlTekst.Checked Then 'Czy mamy wyświetlać tekst po podmianach
txtTekst2.Text = tekst 'Jak tak to wyświetlamy
Else
txtTekst2.Text = "" 'Jak nie to czyścimy okienko
End If
End If
End Sub
'W razie problemów, pytań lub reklamacji pisać na maila: cowboy92@wp.pl
'Reklamacje uwzględniam do 3 dni po otrzymaniu projektu
'Nie mogę oczywiście zagwarantować że nie będzie dopytki ani nawet maksymalnej liczby punktów więc proszę o przeanalizowanie
'tego programu i zgłoszenie to co chcielibyście może żeby działało inaczej. Na wypadek dopytki jest ten myślę całkiem
'szczegółowy opis ale w razie pytań to kierować je na maila
'schemat myślę że jest w miarę dokładny, ale w razie pytań również na maila
Wyszukiwarka
Podobne podstrony:
Platforma Stewarta opis programuOpis programowania Pioneer 1430Opis programuopis programu czyste powietrze wokol nasBazaFilmów Opis programuPolski opis programu AutorunsPolski opis programu ESTPolski opis programu Chemistry ProblemsOpis programu HEC RASWyznacznik opis programuOpis programu UTC GTPolski opis programu fx CalcKEB F5 opis programuOPIS PROGRAMUrozdzial 8 Opis programowania krokowegoOpis programu DalilyDiarySymantec Endpoint Protection 11 0 4014 MR4 MP1 32 bit PL Full OPIS PROGRAMUAnaliza tekstu opis programuwięcej podobnych podstron