2013-03-11 4 views
3

직렬 포트를 열 때마다 다음 문자열이 표시됩니다.이 문자열은 연결된 장치가 실행중인 BIOS 버전과 펌웨어 버전을 확인하기위한 것입니다.문자열의 시작과 끝 문자를 필터링합니다.

문자열 :

이제 바이오스 버전과 펌웨어 버전을 확인하는 유일한 중요한 charachters은 다음과 같다
v03400216000000001FC5H240108206B-RAMBOX=[03] 

:

03400216 

참고 : bytearraystring로 변환 된 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. 

내가 대신 .Remove의하는 Regex 사용해야합니까?

는 편집 :

@lazyberezovsky은, 저를 도와 그냥 .Substring()에 대해 잊어 버렸습니다.

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

에 따라 달라질 수 있습니다 ** 항상 ** 초기 v 이후 8 자입니까? 아니면 달라질 수 있습니까? – freefaller

+0

입력 문자열은 항상 길고 그렇습니다. 필요한 문자는 항상 1에서 9 문자입니다. – Max

답변

6

무엇 단순 문자열에 대한 :

나는 다음 코드로 string result을 달성?

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

Aaaah, 하위 문자열을 잊어 버려서 고맙습니다.) – Max

+2

@Mobstaa @Mobstaa 나는 누군가가 좋은 ol ' Substring()'... 내가 직접 잊어 버릴 때까지 : – Nolonar

+1

하하 나는 수천 번처럼 내 코드에서 사용했지만 힘든 주말에는 좋은 생각을 잊어 버릴 정도로 많이 생각한다. 그걸로 모든 일이 열심히했다. 스택이 나를 허용 할 때 나는 당신의 대답을 받아 들일 것이다 :) – Max

관련 문제