如何删除零值?

时间:2016-12-27 01:16:14

标签: c# serial-port

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)但仍然无效。 一旦用户点击“打开串口”按钮,我就可以从称重机获得价值

2 个答案:

答案 0 :(得分:1)

更改此行:

string weight = serialPort.ReadLine();

到此:

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

在将值加载到声明的变量之前,它会做什么是readline,修剪前0,然后修剪外部(start amd end)空格

答案 1 :(得分:1)

这似乎可能是由很多因素引起的。

查看代码时,应该删除前导零,因为你已经将前两个字符串输出。

我看到你的函数serialPort_DataReceived从你端口的设备读取数据,所以我假设你的屏幕截图来自输出设备。

尝试和硬编码

weight = "12345";

如果问题仍然存在,则不是由代码引起的,而是由您的设备引起的。

希望这会有所帮助〜