为什么要覆盖字符串的开头而不是将其粘贴到最后?

时间:2016-03-27 16:29:19

标签: c#

我正在建立温度记录仪。

屏幕截图:http://imgur.com/U74v4AT;

while (true)
{
      string line = myport.ReadLine(); // line = *"T: 18.40"*

      if (line.StartsWith("T"))
      {
          line = line.Substring(3) + "°C";
          Console.WriteLine(line);
          // output is *"°C.40"* instead of *"T: 18.40°C"*                   
      }
}

2 个答案:

答案 0 :(得分:5)

您的输入行很可能以"\r"结尾,控制台屏幕上的输出并不能很好地表示该行实际是什么。

Console.WriteLine("18.40\r°C")

会在屏幕上显示

  

°C.40

一个解决方案是清除myport的输入(我猜是一个SerialPort?)

string line = myport.ReadLine(); // line = "T: 18.40\r"
line = line.Trim();              // remove all leading/trailing whitespace

但它不应该发生。 ReadLine()应该已经删除了行结尾。不知何故,myport.NewLine属性设置为"\n",而"\r\n"属性为self

答案 1 :(得分:-1)

这条线很可能不是你所期望的那样。 试试这个,它可能会更稳定。

line = line.Split(' ').Last() + "°C";