【问题标题】:C# String.SubString With MessageBox Does Not Display Anything带有 MessageBox 的 C# String.SubString 不显示任何内容
【发布时间】:2013-02-28 20:25:15
【问题描述】:

我正在尝试使用MessageBox 显示string 的一部分,为此我使用String.SubString 方法。但是,当我运行代码时,MessageBox 不会显示,也不会引发错误。

出于故障排除的目的,我在尝试显示 substring 之前将整个字符串显示在 MessageBox 中。

这将显示以下内容 (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);
    }
}

【问题讨论】:

  • 您可以将消息作为文本发布而不是链接到图像共享站点吗?
  • @DStanley 完成,您可能已经自己编辑了 :)
  • 虽然我不能 100% 确定,但它似乎实际上以 `` 开头——注意前导空格。
  • @RudiVisser,简单。他可能无法访问该站点。这取决于他在哪里。
  • @RudiVisser 如果我可以访问 imgur.com,我会这样做的。

标签: c# string substring messagebox


【解决方案1】:

我无法访问您的链接图片,所以我不确定message 包含什么,但是

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

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

使用

String zoneNumber = message.Substring(5);

改为。

【讨论】:

    【解决方案2】:

    换个方式

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

    String zoneNumber = message.Substring(5);
    

    【讨论】:

      【解决方案3】:

      我想显示字符串的数字部分,但是当我尝试这样做时,什么都没有显示

      那是因为,查看您的消息,它有前导空格,而您正在尝试这样做StartsWith("&lt;BID&gt;")

      首先,TrimStart,然后尝试StartsWith,或者直接使用Contains

      StartsWith:

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

      【讨论】:

        【解决方案4】:

        所以问题是if (message.StartsWith("&lt;BID&gt;")) 不返回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);
               }
        }
        

        【讨论】:

          【解决方案5】:

          您可以使用 rplace 代替 SubString

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

          【讨论】:

            【解决方案6】:

            试试这个:

            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);
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-12-15
              • 1970-01-01
              • 1970-01-01
              • 2022-11-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-06-27
              相关资源
              最近更新 更多