来自字符串的枚举索引

时间:2016-12-18 08:08:10

标签: vb.net enums console-application

假设我有一个带有以下代码的控制台应用程序:

  'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
               ...
               'site/image/<id:^(\w+/){1}(\w+/){0,9}\w+\.\w+$ >' => 'site/image',
                ...
               ,
            ],

如果 input 与enum中的成员名称具有相同的值,我希望能够从 FoodItems 中的特定成员获取值;即当输入是&#34; banana&#34;时得到1。如何处理这段代码呢?

2 个答案:

答案 0 :(得分:0)

我不知道我是否理解得很好:你希望用户写一些东西,如果这个东西是你的Enum中的一个单词,那么输出将是Enum&中单词的数字&#34; #34 ;?例如,如果我写banana,应用程序将写入1。 如果这是你想要的,你可以这样轻松地做到这一点:

If input = FoodItems.banana.ToString() Then Console.WriteLine(FoodItems.banana)
    Console.ReadLine()

如果要检查枚举中的所有元素,则必须选择案例:

    Sub Main()
    Dim input As String = Console.ReadLine()
    Select Case input
        Case FoodItems.apple.ToString()
            Console.WriteLine(FoodItems.apple)
        Case FoodItems.banana.ToString()
            Console.WriteLine(FoodItems.banana)
        Case FoodItems.pineapple.ToString()
            Console.WriteLine(FoodItems.pineapple)
    End Select
    Console.ReadLine()
End Sub

可能有更好的方法,但我会这样做。

答案 1 :(得分:0)

你可以试试这个 - 它对我来说很好。如果字符串是枚举,则下面的函数返回枚举索引,否则返回-1。

<Flags> Friend Enum test
    banana
    apple
    orange
    pear
End Enum

Private Function ReturnEnum(inputString As String) As Integer
    Dim a As test
    Try
        a = test.Parse(GetType(test), inputString)
    Catch
        Return -1
    End Try
    Return CInt(a)
End Function