我有一个案例结构,根据值解码字符串值和动作代码。案例结构非常简单,它解码预定义的值(例如“/ 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
不确定如何实现这一目标。 感谢任何帮助,谢谢。
答案 0 :(得分:2)
您可以将Case
语句与Is
关键字和比较运算符表达式一起使用。
将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