Hallo Community,
nochmals brauch ich Hilfe. Ich sitz gerade an einem Chatbot, der je nach Texteingabe verschiedene Antworten ausgibt.
Die Chatnachricht wird in einem String namens message gespeichert, und dann durch eine Funktion gejagt, die überprüft ob eine der eingespeicherten Nachrichten zutrifft, und diese Antwort dann per Return wieder zurückgibt.
Die Funktion ist folgend aufgebaut, oben für den Fall das nichts zutrifft, ist die Antwort (msg), dass kein gültiger Befehl gefunden wurde.
Dann kommt natürlich das
, und je nach Treffer wird in den msg String die Antwort gespeichert.
Beispiel das natürlich funktioniert :
Nun, soweit so gut, so einfach. Ich möchte nun aber für eine mathematische Berechnung aus der Message zwei Werte auslesen, die addiert werden. Klappt soweit auch ganz gut, dank Kangaroo...
Dazu ein Beispiel was ohne Probleme funktioniert :
Nur möchte ich das ganze allgemein, und natürlich nicht nur für 1+2.
Daher wollte ich auf das gute alte Contains zugreifen, was aber nicht hinhaut.
Dies und auch Startswith funktioniert nicht. Der Msg String das nichts zutraf wird ausgegeben, und diese kleine Rechenfunktion überlesen.
Meines Wissens klappte String.contains immer in Case-Abfragen...
Hoffe mir kann wer helfen !
Gruß
Kuhglocke
nochmals brauch ich Hilfe. Ich sitz gerade an einem Chatbot, der je nach Texteingabe verschiedene Antworten ausgibt.
Die Chatnachricht wird in einem String namens message gespeichert, und dann durch eine Funktion gejagt, die überprüft ob eine der eingespeicherten Nachrichten zutrifft, und diese Antwort dann per Return wieder zurückgibt.
Die Funktion ist folgend aufgebaut, oben für den Fall das nichts zutrifft, ist die Antwort (msg), dass kein gültiger Befehl gefunden wurde.
Dann kommt natürlich das
, und je nach Treffer wird in den msg String die Antwort gespeichert.
Beispiel das natürlich funktioniert :
Nun, soweit so gut, so einfach. Ich möchte nun aber für eine mathematische Berechnung aus der Message zwei Werte auslesen, die addiert werden. Klappt soweit auch ganz gut, dank Kangaroo...
Dazu ein Beispiel was ohne Probleme funktioniert :
VB.NET-Quellcode
- Case "addieren1+2"
- Dim source As String = message
- Dim pattern As String = "addieren(?<zahl1>\d+)\+(?<zahl2>\d+)"
- Dim m As Match = Regex.Match(source.Replace(" ", ""), pattern)
- If m.Success = True Then
- TextBox1.Text = (String.Format("Zahl1: {0} Zahl2: {1}", m.Groups("zahl1").Value, m.Groups("zahl2").Value))
- End If
- Dim zahl1 As Integer = CInt(m.Groups("zahl1").Value)
- Dim zahl2 As Integer = CInt(m.Groups("zahl2").Value)
- msg = "Das Ergebnis von " & zahl1 & " + " & zahl2 & " ist " & zahl1 + zahl2 & "!"
Nur möchte ich das ganze allgemein, und natürlich nicht nur für 1+2.
Daher wollte ich auf das gute alte Contains zugreifen, was aber nicht hinhaut.
VB.NET-Quellcode
- Case message.Contains("addieren")
- Dim source As String = message
- Dim pattern As String = "addieren(?<zahl1>\d+)\+(?<zahl2>\d+)"
- Dim m As Match = Regex.Match(source.Replace(" ", ""), pattern)
- If m.Success = True Then
- TextBox1.Text = (String.Format("Zahl1: {0} Zahl2: {1}", m.Groups("zahl1").Value, m.Groups("zahl2").Value))
- End If
- Dim zahl1 As Integer = CInt(m.Groups("zahl1").Value)
- Dim zahl2 As Integer = CInt(m.Groups("zahl2").Value)
- msg = "Das Ergebnis von " & zahl1 & " + " & zahl2 & " ist " & zahl1 + zahl2 & "!"
Dies und auch Startswith funktioniert nicht. Der Msg String das nichts zutraf wird ausgegeben, und diese kleine Rechenfunktion überlesen.
Meines Wissens klappte String.contains immer in Case-Abfragen...
Hoffe mir kann wer helfen !
Gruß
Kuhglocke