You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET 使用正则表达式替代多个IF语句实现EMWINHeader验证

用正则表达式替代多IF语句的EMWIN头部验证

你可以通过一个正则表达式一次性验证所有条件,将原函数简化为单行代码:

Imports System.Text.RegularExpressions

Private Function ValidateEMWINHeader(ByVal instream As Byte()) As Boolean
    Return Regex.IsMatch(System.Text.Encoding.ASCII.GetString(instream, 0, 86), "^.{6}/PF.{12}/PN.{6}/PT.{6}/CS.{7}/FD.{32}\r\n$")
End Function

正则表达式解释

这个正则精准对应原代码的每一项检查:

  • ^.{6}/PF:跳过前6个字符后,匹配第7-9位的/PF(对应原Mid(headerStr,7,3))
  • .{12}/PN:跳过/PF之后的12个字符,匹配第22-24位的/PN(对应原Mid(headerStr,22,3))
  • .{6}/PT:跳过/PN之后的6个字符,匹配第31-33位的/PT(对应原Mid(headerStr,31,3))
  • .{6}/CS:跳过/PT之后的6个字符,匹配第40-42位的/CS(对应原Mid(headerStr,40,3))
  • .{7}/FD:跳过/CS之后的7个字符,匹配第50-52位的/FD(对应原Mid(headerStr,50,3))
  • .{32}\r\n$:跳过/FD之后的32个字符,匹配最后两位的回车换行(对应原Mid(headerStr,85,2)),同时$确保字符串总长度为86(和原代码取前86字节的逻辑一致)

注意事项

  • 确保引用System.Text.RegularExpressions命名空间,否则需要写全类名System.Text.RegularExpressions.Regex
  • 原代码的ASCII编码转换逻辑被保留,保证和原有验证逻辑一致
  • 正则默认区分大小写,和原代码的字符串比较行为一致

内容的提问来源于stack exchange,提问作者Jim wyman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:46:16