Jak zrobić procedure wykrywającą dane słowo w zdaniu?

0

Witam. Otóż chciałem zapytać o pewną rzecz. Chodzi mi dokładnie o to jak zrobić procedure wykrywającą dane słowo w zdaniu gdyż zabrałem się za pisanie "chat bota" a z racji że jestem całkiem zielony w tym nie umiem zrobić takiej funkcji. Chodzi dokładnie o to aby funkcja ta sprawdzała czy w zdaniu znajduje się jakieś dane słowo na przykład: "strona", reakcje na to już dam rade chyba zrobić sam ale chwilowo każda z linijek kodu wygląda tak:

If TextBox1.Text = "coś tam" Then 
Label1.Text = "coś tam"
TextBox1.Clear()

I dalszy ciąg. A chodzi o to żeby nie wpisywać tak za każdym razem zdań całych, bądź samych słów tylko żeby wykrywało w zdaniu takie słowo. Próbowałem zrobić coś w stylu:

If TextBox1.Text = "coś tam coś tam" & TextBox1.Text Then
Label1.Text = "coś tam coś tam"
TextBox1.Clear()

Tylko że to działa kiedy to ma dać ten tekst np. w komunikacie systemowym a nie w czymś takim i kompletnie nie wiem jak to zrobić żeby to jakoś miało ręce i nogi. Dziękuje z góry za pomoc.

zamiana znaczników <code class="cpp"> na <code class="vbnet"> - @furious programming

0

Użyj gotowej metody String.Contains Method

' This example demonstrates the String.Contains() method 
Imports System

Class Sample
   Public Shared Sub Main()
      Dim s1 As String = "The quick brown fox jumps over the lazy dog" 
      Dim s2 As String = "fox" 
      Dim b As Boolean
      b = s1.Contains(s2)
      Console.WriteLine("Is the string, s2, in the string, s1?: {0}", b)
   End Sub 'Main
End Class 'Sample
' 
'This example produces the following results: 
' 
'Is the string, s2, in the string, s1?: True 
'
0

Z tym że to ma się wywodzić od If - a nie bardzo wiem jak podpiąć ten kod pod if :/ Jestem naprawdę zielony w programowaniu więc takie kody dla mnie jak na razie to czarna magia ale się dopiero zaczynam uczyć. Jeżeli byś mógł mi powiedzieć jak to podpiąć pod If coś w stylu tego pierwszego kodu co podałem w poście i żeby reagowało jakąś odpowiedzią - bo tu nie za wiele rozumiem. Jak dla mnie to wygląda tak że podaje zdanie i to z tego zdania wyłapuje tą 1 frazę, a to ma wyłapywać nie ważne z jakiego zdania, po prostu ma wyłapać i zareagować na to tak jak ja sobie tego życze.

0

a to ma wyłapywać nie ważne z jakiego zdania, po prostu ma wyłapać i zareagować na to tak jak ja sobie tego życze.

Nie rozumiem. Ale wersja z If:

Public Class Form1

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      If CałeZdanie.Text.Contains(SzukaneSłowo.Text) Then
         Odpowiedź.Text = "Zawiera"
      Else
         Odpowiedź.Text = "Nie zawiera"
      End If
   End Sub
End Class

A tak btw. jak nie rozumiesz jeszcze takich podstaw to może warto nie zabierać się za okienka tylko szlifować język na aplikacjach konsolowych.

0

No dobra wszystko ładnie pięknie tylko ten nawias mi psuje wszystko. Tam gdzie jest "szukane słowo" - wpisuje je tam i po prostu wywala błąd... a program jak nie wiedział o co mi chodzi tak dalej nie wie co chce mu przekazać. Tam gdzie trzeba było zamieniłem to na TextBox i na Label i jest dobrze. Tylko tam w nawiasie w pierwszej linijce z Contains wywala błąd i tyle z wyszukiwania tego słowa. A co do konsolowych - nawet nie próbowałem bo nawet nie wiem od czego zacząć a tak trochę za bardzo jeszcze nawet nie zacząłem nauki informatycznej (po wakacjach się zacznie) i po prostu nie ma nikogo kto by pomagał, a 1 program pisałem na informatykę więc musiałem zacząć od okienek.

0

Wrzuć aktualny kod.

0

Pokaż jak to zrobiłeś bo zgaduje że zrobiłeś coś takiego:

TextBox1.Text.Contains(SzukaneSłowo)

zamiast

TextBox1.Text.Contains("SzukaneSłowo")

a program jak nie wiedział o co mi chodzi tak dalej nie wie co chce mu przekazać. a to głupol. :D
A tak serio ja też nie rozumiem co chcesz osiągnąć.

0

Ten program robię tak dla funu bo mnie to interesuje - ale kod to na pewno jest na poziomie newbie

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text.Contains(Test.Text) Then
            Label1.Text = "Zawiera"
        ElseIf TextBox1.Text = "cześć" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "wersja" Then
            Label1.Text = "Bot IREK wersja Alpha 0.1 stworzony przez użytkownika Dawox"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "witam" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "witaj" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "siemka" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "hej" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "siema" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "dzień dobry" Then
            Label1.Text = "Witaj"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co u ciebie?" Then
            Label1.Text = "Jestem botem służącym do rozmowy - co może być u mnie? :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co tam?" Then
            Label1.Text = "Jestem botem służącym do rozmowy - co może być u mnie? :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co jest?" Then
            Label1.Text = "Jestem botem służącym do rozmowy - co może być u mnie? :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "jak tam?" Then
            Label1.Text = "Jestem botem służącym do rozmowy - właśnie tak tam :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "jak się czujesz?" Then
            Label1.Text = "Jestem botem do rozmowy - nie mam uczuć"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "u mnie dobrze" Then
            Label1.Text = "Ciesze się że u ciebie wszystko dobrze"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "U mnie w porządku" Then
            Label1.Text = "Ciesze się że u ciebie wszystko dobrze"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "u mnie git" Then
            Label1.Text = "To się ciesze :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "u mnie jest git" Then
            Label1.Text = "To się ciesze :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "u mnie fajnie" Then
            Label1.Text = "To super :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "jesteś inspirowany innym botem?" Then
            Label1.Text = "Troche snickersem z tym że ja jestem stworzony przez amatora i nie mam żadnych zaawansowanych algorytmów :) Narazie..."
            TextBox1.Clear()
        ElseIf TextBox1.Text = "zagrajmy" Then
            Label1.Text = "Chwilowo brak dostępnych gier. Planowane są do dodania w przyszłości :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "zagramy?" Then
            Label1.Text = "Chwilowo brak dostępnych gier. Planowane są do dodania w przyszłości :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co umiesz robić prócz gadania?" Then
            Label1.Text = "w zasadzie to nic - jestem od gadania :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "umiesz coś prócz gadania?" Then
            Label1.Text = "Nie bardzo :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "umiesz coś prócz gadania z kimś?" Then
            Label1.Text = "Nie bardzo :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "potrafisz coś prócz gadania?" Then
            Label1.Text = "nie bardzo :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "jak masz na imie?" Then
            Label1.Text = "Moje imie to Irek :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "jak się nazywasz?" Then
            Label1.Text = "Nazywam się Irek :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "imie" Then
            Label1.Text = "Moje imie to Irek :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "twoje imie to irek?" Then
            Label1.Text = "Zgadza się. Jestem Irek, jeżeli chcesz wiedzieć od czego pochodzi ten skrót zapytaj mnie o to :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "masz na imie irek?" Then
            Label1.Text = "Zgadza się. Jestem Irek, jeżeli chcesz wiedzieć od czego pochodzi ten skrót zapytaj mnie o to :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "nazywasz się irek?" Then
            Label1.Text = "Zgadza się. Jestem Irek, jeżeli chcesz wiedzieć od czego pochodzi ten skrót zapytaj mnie o to :)"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "nazwisko" Then
            Label1.Text = "Nie mam normalnego imienia i nazwiska. Jestem po prostu Irek."
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co oznacza irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co znaczy irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co to znaczy irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "to co znaczy irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "co to irek?" Then
            Label1.Text = "IREK - Inteligentny Robot Ery Komputerowej"
            TextBox1.Clear()
        ElseIf TextBox1.Text = "irek" Then
            Label1.Text = "Irek? Ale co Irek? Sprecyzuj."
            TextBox1.Clear()
        Else
            Label1.Text = "Przepraszam, nie zrozumiałem? Być może jest to słowo/zdanie którego nie znam i zostanie ono dodane w przyszłości. Sprawdź czy aby na pewno wszystko jest napisane małą literą i czy nie ma znaków interpunkcyjnych prócz znaku zapytania, o ile zadawałeś pytanie :)"
            TextBox1.Clear()

        End If
    End Sub

zamiana znacznika <code class="cpp"> na <code class="vbnet"> - @furious programming

0

Dobra już naprawiłem i działa jak należy. Dziękuje jeszcze raz za pomoc :)

1

Zrób sobie tablicę z tymi pytaniami i iteruj po niej, bo ta drabinka ifów jest brzydka; Dorób sobie też tablicę z tekstami dla etykiety i TextBox1.Clear() wykonuj tylko raz, jak przy iteracji znajdziesz szukane pytanie.

0

Niezbyt inteligentny, skoro to tylko drabinka ifów ;)

0
dawox napisał(a):

Ten program robię tak dla funu bo mnie to interesuje - ale kod to na pewno jest na poziomie newbie

To nawet newbie nie jest :D

Jeszcze można zrobić, żeby program traktował tekst pisany małymi i dużymi literami tak samo, będzie obsługiwał więcej danych.
Żeby to zrobić, to tekst, na którym wywołujesz metodę Contains() musisz wcześniej przerobić metodą ToLower().

1 użytkowników online, w tym zalogowanych: 0, gości: 1