2016-11-16 60 views
0

下在C#中的問題(在VS 2015年社區工作):如何字符串轉換爲一個詮釋

首先,我相當新的C#,所以原諒我,如果這個問題將是一個容易解決。

我有一個接觸式傳感器給我一串數字(長度測量)。我用SystemPort方法讀取它們,並將它們切成我需要的子字符串(因爲字符串的開頭,「SR00002」對我來說是無用的)。

最後我最終得到了一個像「000.3422」或「012.2345」這樣的字符串。現在我想將該字符串轉換爲一個可以處理的固態int變量,意思是從中減去值等。

BSP:我想計算012.234 - 000.3422

我已經嘗試過解析和ConvertToInt(同時通過串迭代),但endresult始終是一個字符串(或代替,但我可以改變這種事前)。 。

string b = serialPort2.ReadLine(); 
    string[] b1 = Regex.Split(b, "SR,00,002,"); 
    string b2 = b1[1].Substring(1); 
    foreach (char c in b2) 
    { 
     Convert.ToInt32(c); 
    }     
    textBox2.Text = b2 + b2.GetType(); 

我知道,當B2將是int它不能在文本框進行打印,但後來生病照顧那個。

當一切相應轉換,生病外包轉化成其自己的方法=)

對GetType只是用於測試和作爲所述中僅示出System.String(我不想)。幫助將被大大簡化。我也瀏覽了搜索功能和谷歌,但無法找到任何幫助。我希望任何可能的幫手都有美好的一天,克里斯。

+0

如果你想保留小數點,那麼你需要到'string'轉換爲'double',' 'decimal'或'float' ..看看'decimal.Parse'和'decimal.TryParse'https://msdn.microsoft.com/en-us/library/system.decimal.parse(v=vs .110).aspx和https://msdn.microsoft.com/en-us/library/9zbda557(v=vs.110).aspx(您也可以爲其他數字類型執行此操作) – KMoussa

+0

b2是一個字符串,因此如果你做b2.GetType,你會得到結果字符串。你正在轉換字符串,但你沒有聲明與返回的任何東西來自ToInt32的teger();. –

+0

感謝您的快速解答。我嘗試了decimal.TryParse。它在開始時削減了零點,但在回顧中可能實際上相當好,因爲這樣我就可以獲得傳感器讀取的信號量,這基本上就是我需要的=) –

回答

0

使用int.Parse

int.Parse( 「123」)

+0

曾與: 小數b3 = decimal.Parse(b1 [1]); 可悲的是,不記錄小數點並顯示一個大數字,但仍然可以使用此分析方法提供的數字,因爲它顯示傳感器讀數的數量。 –

0

您需要將轉換的值分配給需要int或其他數字值的新變量或數組。

int[] numbers = new int[b1.length]; 
for(int i = 0; i < b2.length; i++) 
    { 
     numbers[i] = Convert.ToInt32(b2[i]); 
    } 
+0

感謝您的答案。生病的人可以嘗試一下。但是,這樣不會破壞十進制數,只是給我(在你提供的解決方案)一個數組而不是一個固定的浮點數/小數。我可能已經表達了自己最初有點不好,不想要一個整數,而是想用一個固定的數字來計算=) –

+0

@ Chrisoph-Poser啊對不起,我看到你找到了你的解決方案。是的,你可以根據你的需要用'double','decimal'或'float'替換int,但在這種情況下我會用'float'去。 – CrimsonSage