2013-03-11 101 views
3

每次打開串行端口時都會收到以下字符串,該字符串用於檢查連接的設備正在運行的bios版本和固件版本。從字符串中篩選開始和結束字符

字符串:

v03400216000000001FC5H240108206B-RAMBOX=[03] 

現在檢查BIOS版本和固件版本唯一重要charachters如下:

03400216 

注:bytearray轉換爲string一個byte[]和填充附:

v03400216000000001FC5H240108206B-RAMBOX=[03] 

我試圖實現這個使用下面的代碼:

string versiontext = bytearray.Trim(); 
bytearray = versiontext.Remove(0, 2); 
versiontext = bytearray.Remove(9, bytearray.Length); 
bytearray = versiontext; 

但是沒有工作了,並導致以下異常:

Index and count must refer to a location within the string. 

我應該使用一個Regex,取而代之的是.Remove的?

編輯:

@lazyberezovsky幫了我,我只是忘了.Substring()

if (bytearray.Contains("RAMBOX")) 
{ 
     string Versionstring = bytearray.Substring(1, 8); 
     bytearray = Versionstring; 
} 
+0

這取決於,它會**總是**在最初的'v'之後有8個字符嗎?或者它可以改變? – freefaller 2013-03-11 10:54:18

+0

輸入字符串總是這麼長,是的,我需要的字符總是字符1到9 – Max 2013-03-11 10:55:18

回答

6

什麼簡單的字符串:

我用下面的代碼實現的string result

var input = "v03400216000000001FC5H240108206B-RAMBOX=[03]"; 
var version = input.Substring(1, 8); 
+1

Aaaah,謝謝我忘了子字符串;) – Max 2013-03-11 10:54:27

+2

@Mobstaa我從來沒有想過我會看到有人忘記好的ol' Substring()'...直到我自己忘了它:p – Nolonar 2013-03-11 10:55:57

+1

哈哈我在我的代碼中使用了它,比如數千次,但是週末艱難,我想我的腦海裏只想忘記好的.Substring,並且他們都很努力,拿着。去掉。我會接受你的回答,當Stack允許我:) – Max 2013-03-11 10:58:09

相關問題