2013-03-11 2 views
3

Я получаю следующую строку каждый раз, когда я открываю последовательный порт, эта строка предназначена для проверки версии BIOS и версии прошивки подключенного устройства.Фильтровать начальные и конечные символы из строки

Строка:

v03400216000000001FC5H240108206B-RAMBOX=[03] 

Теперь единственное важное charachters для проверки версии Bios и версии прошивки являются следующим:

03400216 

Примечания: bytearray является byte[] преобразуется в string и заполненном с:

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?

EDIT:

@lazyberezovsky помог мне, я просто забыл о .Substring().

Я достиг string result со следующим кодом:

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

Это зависит, будет ли он ** всегда ** быть 8 символами после первоначального 'v'? Или это может измениться? – freefaller

+0

Входная строка всегда такая длинная, и да символы, в которых я нуждаюсь, всегда являются символами от 1 до 9 – Max

ответ

6

Что о простой подстроки?

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

Aaaah, спасибо, что я забыл о подстроке;) – Max

+2

@Mobstaa Я никогда не думал, что увижу, что кто-то забыл о хорошем ol ' Substring() '... до тех пор, пока я сам не забуду об этом: p – Nolonar

+1

haha ​​Я использовал его в своем коде как тысячу раз, но был трудный уик-энд, и я догадываюсь, что на уме, чтобы просто забыть Good .Substring и все это делало это трудно, с .Remove. Я приму свой ответ, когда Stack позволяет мне :) – Max

Смежные вопросы