Rubrik: Variablen/Strings | VB-Versionen: VB2005, VB2008 | 07.05.08 |
Enum-Wert aus String (Zeichenketten) ermitteln Mit der Parse-Methode lässt sich ein String (Zeichenkette) sehr einfach in den äquivalenten Enum-Wert einer Auflistung konvertieren. | ||
Autor: Dieter Otter | Bewertung: | Views: 24.799 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Hatten Sie nicht auch schon einmal das Problem, den Enum-Wert einer Auflistung anhand eines Strings (Zeichenkette) ermitteln zu müssen?
Beispiel:
' Enum-Auflistung Private Enum Wochentag Sonntag = 0 Montag Dienstag Mittwoch Donnerstag Freitag Samstag End Enum
Anhand eines Strings mit der Enum-Zeichenfolge (bspw. "Donnerstag") soll jetzt der dazugehörige Wert aus der Enum-Auflistung "Wochentag" ermittelt werden.
Eine Möglichkeit wäre jetzt, anhand einer "Select Case"-Abfrage den Wert zu ermitteln:
Dim sWochentag As String = "Donnerstag" Dim nWochentag As Wochentag Select Case sWochentag Case "Sonntag" nWochentag = Wochentag.Sonntag Case "Montag" nWochentag = Wochentag.Montag Case "Dienstag" nWochentag = Wochentag.Dienstag Case "Mittwoch" nWochentag = Wochentag.Mittwoch Case "Donnerstag" nWochentag = Wochentag.Donnerstag Case "Freitag" nWochentag = Wochentag.Freitag Case "Samstag" nWochentag = Wochentag.Samstag End Select
Die Variable "nWochentag" hätte nach Abarbeitung der Select-Case Abfrage jetzt den Wert 4 (Wochentag.Donnerstag)
Dieser Code ist jedoch nicht gerade effizient und auch den entscheidenden Nachteil, dass man diesen wieder anpassen muss, wenn sich die Enum-Auflistung ändert oder erweitert wird.
Mit der Parse-Methode des System.Enum-Klasse geht das ganze jedoch viel einfacher!
Dim sWochentag As String = "Donnerstag" Dim nWochentag As Wochentag nWochentag = CType(System.Enum.Parse(nWochentag.GetType(), sWochentag), Wochentag)