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