3

シリアルポートを開くたびに次の文字列を受け取ります。この文字列は、接続されているデバイスが実行している BIOS バージョンとファームウェア バージョンを確認するためのものです。

弦:

v03400216000000001FC5H240108206B-RAMBOX=[03]

現在、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ますか?

編集:

@lazyberezovsky は私を助けてくれました.Substring().

string result次のコードで達成しました:

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

1 に答える 1

6

単純な部分文字列はどうですか?

var input = "v03400216000000001FC5H240108206B-RAMBOX=[03]";
var version = input.Substring(1, 8);
于 2013-03-11T10:53:51.197 に答える