3

文字列値をデコードし、値に基づいてアクションコードを実行するケース構造があります。ケース構造は、定義済みの値 ("/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

これがどのように達成できるかわかりません。助けていただければ幸いです、ありがとう。

4

3 に答える 3

2

Caseこのステートメントは、Isキーワードおよび比較演算子式と共に使用できます。

選択...ケース

Is キーワードを比較演算子 (=、<>、<、<=、>、または >=) と共に使用して、testexpression の一致値に対する制限を指定します。Is キーワードが指定されていない場合は、自動的に比較演算子の前に挿入されます。

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:または/SetServerIR.

于 2013-09-16T10:27:17.553 に答える
2

すでに受け入れられている回答に対するわずかな改善。以下のコードを使用してください

Select Case True 
Case Message Like "/SetServerIP:*"
                        'Determine IP from Message string (*)
                        'Set new IP address of server in my.settings
End Select
于 2020-01-28T12:55:08.797 に答える
1

一般に、比較では次のように使用しますIs

Select Case aNumber
    Case Is > 42
End Select

… 残念ながら、これはオペレーターでは機能しませんLike(これを指摘してくれた Heslacher に感謝します)。したがって、この使用例は VB のSelect Case声明ではサポートされていません。代わりに連鎖Ifステートメントを使用できます。

または、最初にメッセージからコマンドを解析し、それに基づいて選択します。

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

Select Case command
    Case "/SetServerIP"
    …
End Select
于 2013-09-16T08:41:42.197 に答える