【问题标题】:Filter begin and end characters from a string从字符串中过滤开始和结束字符
【发布时间】:2013-02-26 12:28:10
【问题描述】:

每次打开串口时都会收到如下字符串,这个字符串用于检查连接的设备运行的是哪个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;
}

【问题讨论】:

  • 视情况而定,它会总是在初始 v 之后是 8 个字符吗?还是会有所不同?
  • 输入字符串总是这么长,是的,我需要的字符总是字符 1 到 9

标签: c# regex visual-studio filter


【解决方案1】:

简单的子串呢?

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

【讨论】:

  • @Mobstaa 我从没想过我会看到有人忘记好的 ol' Substring()... 直到我自己忘记了:p
  • 哈哈,我在我的代码中使用了它上千次,但是度过了一个艰难的周末,我想我很想忘记 Good .Substring,并且都在努力,用。消除。当 Stack 允许我时,我会接受你的回答:)
猜你喜欢
  • 2018-11-14
  • 2015-08-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 2015-06-13
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多