Code-Optimierung
Hallo Forum,
ich habe zur Zeit etliche Stellen in meinem Code, wo ich eine Variable mit etlichen Strings vergleichen muss. Kurzes Beispiel:
In dem Beispiel muss ich also prüfen, ob die Variable eine der Werte A, B, I, N oder P annimmt. Gibt es eine Möglichkeit, diese Abfragen z.B. durch reguläre Ausdrücke, zu vereinfachen? Die Aktionen, die durchzuführen sind, wenn eine der Bedingungen erfüllt ist, sind für alle Bedingungen identisch.
Vielen Dank im voraus,
M. Born
ich habe zur Zeit etliche Stellen in meinem Code, wo ich eine Variable mit etlichen Strings vergleichen muss. Kurzes Beispiel:
Dim Variable1 as String = "[C]"
...
If Variable1 = "A" OrElse Variable1 = "B" OrElse Variable1 = "I" OrElse Variable = "N" OrElse Variable = "P" then
'Mache etwas
End If
In dem Beispiel muss ich also prüfen, ob die Variable eine der Werte A, B, I, N oder P annimmt. Gibt es eine Möglichkeit, diese Abfragen z.B. durch reguläre Ausdrücke, zu vereinfachen? Die Aktionen, die durchzuführen sind, wenn eine der Bedingungen erfüllt ist, sind für alle Bedingungen identisch.
Vielen Dank im voraus,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366083
Url: https://administrator.de/forum/code-optimierung-366083.html
Ausgedruckt am: 22.12.2024 um 13:12 Uhr
11 Kommentare
Neuester Kommentar
Sicher
Gruß Snap
Imports System.Text.RegularExpressions
Dim r as Regex = new Regex("^[ABINP]$")
If r.Match(Variable1).Success then
'mache etwas
End if
Zitat von @MarcoBorn:
Vielen Dank. Ich werde das mal testen.
Würde das auch funktionieren, wenn die Variablen aus 1 oder mehreren Buchstaben bestehen, z.B. "A", "B", "BJ", "BK"?
JeppVielen Dank. Ich werde das mal testen.
Würde das auch funktionieren, wenn die Variablen aus 1 oder mehreren Buchstaben bestehen, z.B. "A", "B", "BJ", "BK"?
new Regex("^([ABINP]|BJ|BK)$")
Eine Anmerkung zu RegEx:
Wenn man das beherrscht, dann ist das augenscheinlich "eleganter". Wenn man das jedoch nicht beherrscht, nur gelegentlich einsetzt, und dann auch nur mit Hilfe - so wie ich meist - dann ist das eher hinderlich, wenn man mal nach längerer Zeit wieder in den Code schaut und dann nicht sofort erfasst, was da eigentlich abgeht.
Wenn man das beherrscht, dann ist das augenscheinlich "eleganter". Wenn man das jedoch nicht beherrscht, nur gelegentlich einsetzt, und dann auch nur mit Hilfe - so wie ich meist - dann ist das eher hinderlich, wenn man mal nach längerer Zeit wieder in den Code schaut und dann nicht sofort erfasst, was da eigentlich abgeht.
Ich hoffe die Eckigen Klammern willst du nicht Matchen denn die haben in einem Regex besondere Bedeutung und kennzeichnen ein Set von Zeichen. Willst du diese selbst Matchen must du sie mit Backslash escapen !!! \[ und \]
Also für dich dann
Ein fortgeschrittener Programmierer der Regex nicht aus dem FF beherrscht, gibt's das noch ??
Also für dich dann
new Regex("^\[([ABINP]|BJ|BK)\]$")
Ein fortgeschrittener Programmierer der Regex nicht aus dem FF beherrscht, gibt's das noch ??
Ich würde mich damit trotzdem mal beschäftigen, erstens wenn du einmal Blut geleckt hast willst du es nie mehr missen, zweitens ist das eigentlich nicht sonderlich schwer wenn man mal dahinter gestiegen ist, schau dir mal das Tutorial an. In zwei drei Stunden mit etwas Üben kommt man da schon ziemlich weit. Zusätzlicher Vorteil: Du kannst es so gut wie überall nutzen, sei es in so gut wie jeder guten Skript und Programmiersprache die Bash mit sed und grep etc. pp. Gerade wenn man Dinge in Texten sucht die man sonst ohne Hilfe von Regex nicht oder nur sehr sehr umständlich realisieren würde hilft es ungemein.
Viel Spaß beim "Rexen"
Viel Spaß beim "Rexen"