2016-12-27 45 views
-2

enter image description here如何删除零值?

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
    { 
     if (Clos_flag) return; 
     try 
     { 
      Listening = true; 
      if (serialPort.IsOpen) 
      { 
       this.txt_weight.Invoke(new MethodInvoker(delegate 
       { 

        //txt_weight.Text = serialPort.ReadLine(); 
        serialPort.NewLine = "\r"; 
        string weight = serialPort.ReadLine(); 
        if (weight.IndexOf(")") > 0) 
        { 
         weight = weight.Substring(3, 8); 
         // txt_weight.Text = weight.Substring(0, weight.LastIndexOf("0") + 1); 
        } 
       })); 

      } 
     } 
     catch (Exception eg) 
     { 
      MessageBox.Show(eg.ToString()); 
     } 
     finally 
     { 
      Listening = false; 
     } 
    } 

我应该改变什么在图片去除第一零,以上是我使用的代码。我试图将子字符串更改为(2,8),但仍然不起作用。 我从一个称重机值,一旦用户点击“打开串口”按钮

+1

你在你的'if()'语句中键入“)”而不是“0”。 – CodeCaster

+0

你的'string weight = serialPort.ReadLine();'包含了确切的字符串。 –

+0

之后总是有空格吗? – Edward

回答

1

改变这一行:

string weight = serialPort.ReadLine(); 

这样:

string weight = serialPort.ReadLine().TrimStart('0').Trim(); 

那是什么将执行readline,修剪第一个0,然后在将值加载到声明的变量之前修剪外部(开始和结束)空白空间

+0

它变成空白 – David

+0

@David什么?当我运行'Console.WriteLine(“0 33200”.TrimStart('0')。Trim());'我得到33200 – Edward

+0

@David我看到你选择了一个答案,你硬编码的权重。你从来没有得到我的建议工作?同样,如果你确实让你可以高兴,即使你选择了一个答案,你仍然可以帮助其他人试图帮助你;无论是有用的评论还是答案。谢谢 – Edward

1

似乎这可能是由许多因素造成的。

查看代码,应该删除前导零,因为您已经将前两个字符串分开。

我看到您的函数serialPort_DataReceived从您的端口​​中的设备读取数据,所以我认为您的屏幕截图来自输出设备。

尝试和努力代码

weight = "12345"; 

如果问题仍然存在,将它不是由代码造成的,而是由你的设备等。

希望这有助于〜