我想在控制台窗口上显示一条消息,只要消息不会超过窗口的默认0-79 X宽度。我的代码如下:
int xRemaining = 80 - mRobot.CurrentPos.X;
string message = "ID{0:d} Facing {1:s} at ({2:d},{3:d}) home is({4:d},{5:d})";
string formatMessage = string.Format(message,mRobot.ID,mRobot.getDir.ToString()/*...*/;
if(mRobot.CurrentPos.Y < 24)
{
if (xRemaining < formatMessage.Length)
{
Console.SetCursorPosition((mRobot.CurrentPos.X - xRemaining), mRobot.CurrentPos.Y+1);
}
else
{
Console.SetCursorPosition(mRobot.CurrentPos.X, mRobot.CurrentPos.Y + 1);
}
}
else
{
if(xRemaining < formatMessage.Length)
{
Console.SetCursorPosition((mRobot.CurrentPos.X-xRemaining), mRobot.CurrentPos.Y-1);
}
else
{
Console.SetCursorPosition(mRobot.CurrentPos.X, mRobot.CurrentPos.Y-1);
}
}
Console.Write(message,,mRobot.ID, mRobot.getDir.ToString(), mRobot.CurrentPos.X, mRobot.CurrentPos.Y,mRobot.Home.X,mRobot.Home.Y);
编辑: 使用的string.Format似乎仍然在下一行运行:/
答案 0 :(得分:1)
您可以使用string.Format
方法格式化邮件:
string message = "ID{0:d} Facing {1:s} at ({2:d,3:d}) home is({4:d,5:d})";
string formattedMessage = string.Format(message, mRobot.ID, mRobot.getDir.ToString(), /* ... */);
int msgLength = formattedMessage.Length;
稍后,你可以用以下方式显示它:
Console.WriteLine(formattedMessage);
答案 1 :(得分:0)
您需要在获取字符串之前格式化字符串。您目前正在获取未格式化字符串的长度。为此,您需要使用string.Format
命令:
string output = string.Format(message, .....);
....
if (xRemaining < output.Length)
{
....
}
....
Console.Write(output);