2016-12-27 44 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"; 

如果問題仍然存在,將它不是由代碼造成的,而是由你的設備等。

希望這有助於〜