3

stringを使用して の一部を表示しようとしています。MessageBoxこれには メソッドを使用しString.SubStringます。ただし、コードを実行してMessageBoxも表示されず、エラーもスローされません。

トラブルシューティングの目的で、を表示するMessageBox前に文字列全体を表示しsubstringます。

これにより、次の ( Received |<BID>22|)が表示されます。

文字列の数字部分を表示したいのですが、やってみると何も表示されません。何がうまくいかないのか誰にもわかりますか?コードは次のとおりです。

public void parseMessage(string theMessage)
{
    String message = theMessage.Replace("\n", String.Empty);

    MessageBox.Show("Received |" + message + "|");

    String zoneNumber = message.Substring(5, message.Length);

    if (message.StartsWith("<BID>"))
    {
        MessageBox.Show("Bid received for zone " + zoneNumber);
    }
}
4

6 に答える 6

5

messageリンクされた画像にアクセスできないので、何が含まれているかはわかりませんが、

String zoneNumber = message.Substring(5, message.Length);

文字列の長さが 5 文字オーバーフローするため、例外をスローする必要があります。

使用する

String zoneNumber = message.Substring(5);

代わりは。

于 2013-02-28T20:29:16.080 に答える
2

変えてみたらどうですか

String zoneNumber = message.Substring(5, message.Length);

String zoneNumber = message.Substring(5);
于 2013-02-28T20:29:27.653 に答える
1

文字列の数字部分を表示したいのですが、これを実行しようとすると何も表示されません

それは、あなたのメッセージを見ると、それは主要な空白を持っていて、あなたがやろうとしているからですStartsWith("<BID>")

まずTrimStart、、次に試してみるStartsWithか、または単に実行しますContains

StartsWith

if (message.TrimStart().StartsWith("<BID>"))
{
    MessageBox.Show("Bid received for zone " + zoneNumber);
}
于 2013-02-28T20:32:43.727 に答える
1

問題はif (message.StartsWith("<BID>"))trueを返さないことですか?

これは役に立ちますか?

public void parseMessage(string theMessage)
{
       String message = theMessage.Replace("\r", String.Empty).Replace("\n", String.Empty).Replace("\r\n", String.Empty);
       MessageBox.Show("Received |" + message + "|");
       String zoneNumber = message.Substring(5, message.Length);
       if (message.TrimStart().StartsWith("<BID>"))
       {
          MessageBox.Show("Bid received for zone " + zoneNumber);
       }
}
于 2013-02-28T20:33:46.610 に答える
0

SubStringの代わりにrplaceを使用できます

if (message.StartsWith("<BID>"))
{
    MessageBox.Show("Bid received for zone " + message.Replace("<BID>",""));
}
于 2013-02-28T20:33:08.417 に答える
0

これを試して:

String bidMarker = "<BID>";
int startLoc = message.IndexOf(bid);
if (startLoc != -1)
{
    String zoneNumber = message.Substring(startLoc + bidMarker.Length).Trim();
    MessageBox.Show("Bid received for zone " + zoneNumber);
}
于 2013-02-28T21:42:46.813 に答える