Befehl mit Parameter auslesen, evtl. Regex
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.
-
-
-
-
singu schrieb:
Es kann vor der Klammer auch was anderes stehen .
Mit einem solchen Unterangebot an Informationen kann man Dir wieder einmal nicht helfen, und auf Ratespiele was Du wohl konkret beabsichtigen könntest fehlt mir heute sowohl die Zeit als auch die Lust. Ausserdem solltest Du Dich bei der Anzahl Deiner Beiträge auch mittlerweile selber mit Regex auskennen ... -
-
Hier mal der Code, wie ich mir das vorstelle.
VB.NET-Quellcode
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim code As String = Nothing
- Dim befehl As String = Nothing
- Dim parameter1 As String = Nothing
- Dim parameter2 As String = Nothing
- ' In der Textbox steht folgende Zeichenfolge:
- ' ShowMessage("Dies ist eine Nachricht.", "Titel")
- code = Me.TextBox1.Text
- ' befehl soll dann ShowMessage enthalten
- ' parameter1 soll dann "Dies ist eine Nachricht." enthalten
- ' parameter2 soll dann "Titel" enthalten
- End Sub
- End Class
-
-
Also ich hab es jetzt so weit hinbekommen, das er zwar den Befehl ausliest, aber die Klammer stört noch.
VB.NET-Quellcode
- Imports System.Text.RegularExpressions
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim code As String = Nothing
- Dim befehl As String = Nothing
- Dim parameter1 As String = Nothing
- Dim parameter2 As String = Nothing
- ' In der Textbox steht folgende Zeichenfolge:
- ' ShowMessage("Dies ist eine Nachricht.", "Titel")
- code = Me.TextBox1.Text
- ' befehl soll dann ShowMessage enthalten
- ' parameter1 soll dann "Dies ist eine Nachricht." enthalten
- ' parameter2 soll dann "Titel" enthalten
- 'Dim txt As String = "ShowMessage(""Dies ist eine Nachricht."", ""Titel"")"
- Dim re1 As String = ".*?" 'Non-greedy match on filler
- Dim re2 As String = "\(" 'Any Single Character 1
- Dim r As Regex = New Regex(".*?\(", RegexOptions.IgnoreCase Or RegexOptions.Singleline)
- Dim m As Match = r.Match(code)
- If (m.Success) Then
- For Each group As Group In m.Groups
- Console.WriteLine(group.ToString)
- Next
- 'Dim c1 = m.Groups(1)
- 'Console.WriteLine("(" + c1.ToString() + ")" + "")
- End If
- 'Console.ReadLine()
- End Sub
- End Class
-
-
-
-
-
Ich möchte es gerne mit Regex lösen, da es auch mehrere Parameter sein können und da scheiter ich momentan mit folgendem Code. Dieser liest nur 2 Parameter aus, aber es können auch mehrere Parameter sein und teilweise auch Integer.
VB.NET-Quellcode
- Imports System.Text.RegularExpressions
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim code As String = Nothing
- Dim befehl As String = Nothing
- Dim parameter1 As String = Nothing
- Dim parameter2 As String = Nothing
- ' In der Textbox steht folgende Zeichenfolge:
- ' ShowMessage("Dies ist eine Nachricht.", "Titel")
- code = Me.TextBox1.Text
- ' befehl soll dann ShowMessage enthalten
- ' parameter1 soll dann "Dies ist eine Nachricht." enthalten
- ' parameter2 soll dann "Titel" enthalten
- 'Dim txt As String = "ShowMessage(""Dies ist eine Nachricht."", ""Titel"")"
- 'Dim re1 As String = ".*?" 'Non-greedy match on filler
- 'Dim re2 As String = "\(" 'Any Single Character 1
- Dim re1 As String = "((?:[a-z][a-z0-9_]*))" 'Variable Name 1
- Dim re2 As String = ".*?" 'Non-greedy match on filler
- Dim re3 As String = "("".*?"")" 'Double Quote String 1
- Dim re4 As String = ".*?" 'Non-greedy match on filler
- Dim re5 As String = "("".*?"")" 'Double Quote String 2
- Dim r As Regex = New Regex(re1 + re2 + re3 + re4 + re5, RegexOptions.IgnoreCase Or RegexOptions.Singleline)
- Dim m As Match = r.Match(code)
- If (m.Success) Then
- For Each group As Group In m.Groups
- Console.WriteLine(group.Value)
- Next
- Dim c1 = m.Groups(1)
- Console.WriteLine("(" + c1.ToString() + ")" + "")
- End If
- 'Console.ReadLine()
- End Sub
- End Class
-
-
-
-
@Smoove: Momentan nicht berücktsichtigt, kann aber auch vorkommen, wird aber noch kommen. Nur momentan nicht. Mir geht es lediglich darum, wie ich sauber die Methoden hier z.b. ShowMessage und die Parameter in der Klammer auslesen kann.
Edit: @EiPott: Split und IndexOf möchte ich vermeiden, da die Befehle unterschiedlich sind und auch verschiedene Parameter haben. -
-
-
Hallo singu,
Ich habe jetzt 'ne Lösung für dein Problem gefunden.
Allerdings nicht die beste.
Wenn ich rausfinde wie es noch besser geht ( sprich mit 1 Regex ) poste ich es.
VB.NET-Quellcode
- Imports System.Text.RegularExpressions
- Public Class Form1
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim Target As String = "ShowMessage(""Dies ist eine Nachricht."", ""Titel"")"
- Dim Start As String = Regex.Match(Target, "([a-zA-Z]+)").Groups(1).Value
- Dim Parameter As MatchCollection = Regex.Matches(Target, """([^),""]+)""")
- For Each m As Match In Parameter
- MessageBox.Show(m.Groups(1).Value)
- Next
- End Sub
- End Class
Mfg Kevin.
-
Ähnliche Themen
-
SONiQ - - Sonstige Problemstellungen