截取特定字符串之间的数据

qq_29862715 2016-10-17 04:29:28
我用一个List<string>接收串口传过来的数据,每一条数据都是以A开头,B结束,数据中不存在A和B,怎么判断有没有这样的数据,有的话提取出来,没有就继续从串口接收数据。
...全文
413 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 qq_29862715 的回复:
[quote=引用 4 楼 starfd 的回复:] (?<=A).*?(?=B)
正则表达式具体怎么写?以前没用过。谢谢![/quote]
Regex.Match(txt,@"(?<=A).*?(?=B)").Value
qq_29862715 2016-10-17
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
要分割字符串,使用 Split。例如首先以‘A' 字符分割,如果结果数组的 Length 返回>1,则说明有 'A'。那么可以接下来对数组第二个单元再以字符 'B' 分割,如果 Length >1 说明存在 'B',取数组的第一个单元,就是结果。
好主意!
EnForGrass 2016-10-17
  • 打赏
  • 举报
回复
引用 8 楼 Chinajiyong 的回复:

string str = "AdddddddB";
string pattern = "^A[^AB]*?B$";
var ismatch = Regex.IsMatch(str, pattern);
引入命名空间:using System.Text.RegularExpressions;
EnForGrass 2016-10-17
  • 打赏
  • 举报
回复

string str = "AdddddddB";
string pattern = "^A[^AB]*?B$";
var ismatch = Regex.IsMatch(str, pattern);
qq_29862715 2016-10-17
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
(?<=A).*?(?=B)
正则表达式具体怎么写?以前没用过。谢谢!
  • 打赏
  • 举报
回复
要分割字符串,使用 Split。例如首先以‘A' 字符分割,如果结果数组的 Length 返回>1,则说明有 'A'。那么可以接下来对数组第二个单元再以字符 'B' 分割,如果 Length >1 说明存在 'B',取数组的第一个单元,就是结果。
EnForGrass 2016-10-17
  • 打赏
  • 举报
回复
正则 string pattern = "^A[^AB]*?B$";
  • 打赏
  • 举报
回复
(?<=A).*?(?=B)
by_封爱 版主 2016-10-17
  • 打赏
  • 举报
回复
串口为什么要用list<string>...
巴士上的邂逅 2016-10-17
  • 打赏
  • 举报
回复
给你个思路:当接收到A就开始记录,收到B就处理这段数据,同时开始等待下一个A AB之间最好有校验值和长度,万一AB之间出现了AB呢
yang1216 2016-10-17
  • 打赏
  • 举报
回复
用正则表达式

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧