使用Like Case案例结构

时间:2013-09-16 08:38:58

标签: vb.net switch-statement

我有一个案例结构,根据值解码字符串值和动作代码。案例结构非常简单,它解码预定义的值(例如“/ Start”,“/ Run”等)。但是,我有这个案例结构的一部分,我需要解码一个不断变化的值。

因此,例如,我需要捕获字符串值“/ IP:blah”(其中blah将始终更改)并基于blah执行代码。

我的代码看起来像这样:

Select Case Message
Case Like "/SetServerIP:*"
                        'Determine IP from Message string (*)
                        'Set new IP address of server in my.settings
End Select

不确定如何实现这一目标。 感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

您可以将Case语句与Is关键字和比较运算符表达式一起使用。

Select...Case

  

将Is关键字与比较运算符(=,<>,<,< =,>或> =)一起使用,以指定对testexpression的匹配值的限制。如果未提供Is关键字,则会在compareoperator之前自动插入。

如果Case语句有效,则可以使用Substring()获取IP地址,如:

Dim IPAddress As String=String.Empty
Select Case Message

    Case "/Start"
        ' Your code here
    Case Is >= "/SetServerIP:"
        IPAddress = Message.Substring(13)
        ' your code here
End Select

这将例如匹配 “/SetServerIP:127.0.0.1”=> IPAddress =“127.0.0.1”
“/ SetServerIP:”=> IPAddress =“”

编辑:请注意,这只有在您没有字符串比较greater而不是/SetServerIP:的消息时才有效,例如/SftServerIP:或{{ 1}}。

答案 1 :(得分:1)

通常,通过比较,您可以使用Is

Select Case aNumber
    Case Is > 42
End Select

...遗憾的是,这不适用于Like运算符(感谢Heslacher向我指出这一点)。因此VB的Select Case语句不支持这种用例。您可以改为使用链式If语句。

或者, first 从您的消息中解析出该命令并根据该选择进行选择:

Dim command = Message.Split(":"c)(0)

Select Case command
    Case "/SetServerIP"
    …
End Select

答案 2 :(得分:1)

已经接受的答案略有改善。 使用下面的代码为我工作

Select Case True 
Case Message Like "/SetServerIP:*"
                        'Determine IP from Message string (*)
                        'Set new IP address of server in my.settings
End Select