3

我正在尝试string使用 a来显示 a 的一部分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

您可以使用 rplace 而不是 SubString

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 回答