带有MessageBox的C#String.SubString不显示任何内容

时间:2013-02-28 20:25:15

标签: c# string substring messagebox

我正在尝试使用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);
    }
}

6 个答案:

答案 0 :(得分:5)

我无法访问您的关联图片,因此我不确定message包含哪些内容,但

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

应抛出异常,因为它会使字符串的长度溢出5个字符。

使用

String zoneNumber = message.Substring(5);

代替。

答案 1 :(得分:2)

如何改变

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

String zoneNumber = message.Substring(5);

答案 2 :(得分:1)

  

我想显示字符串的数字部分,但是当我尝试这样做时,不会显示任何内容

那是因为,看着你的消息,它有领先的空白,你正试图做StartsWith("<BID>")

首先,TrimStart,然后尝试StartsWith,或者只做Contains

StartsWith

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

答案 3 :(得分: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);
       }
}

答案 4 :(得分:0)

您可以使用rplace而不是SubString

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

答案 5 :(得分: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);
}