gpt4 book ai didi

c# - 验证用户输入

转载 作者:行者123 更新时间:2023-12-02 17:20:10 26 4
gpt4 key购买 nike

我的用户将在这样的地方输入一些字节。

黄色箭头指向他的输入,橙色箭头指向我的按钮 Screen Cap 001

大约半小时后,我开始意识到这比我想象的要乏味得多。

问题:我是否需要编写数百行代码来确保用户遵守规则?

他的输入中的语法规则是......

  • 一个十六进制字节
  • 然后是逗号
  • 然后是空白(也许,由他选择)

这三个规则可以根据用户的需要重复使用。对于接收到的字节,还有两个规则需要处理...

  • 星号:匹配任意字节数的通配符
  • 问号:匹配任意一个字节的通配符

我必须检查一下

  • 有效字符(0-9、A-F、大写/小写)
  • 两个通配符 ?*
  • 正确放置逗号
  • 没有双逗号
  • 适当的空格(例如数字之间没有空格)
  • 异常的空格(例如,他可以在逗号后放置零个、一个或多个空格)
  • 可能的单个字符表示一个字节(例如“0”而不是“00”)

这里有一些例子..

(第一次编辑和更新,所有用户并非生而平等;语法检查器必须处理此问题...)

来自 Smart Good 用户的良好、正常、格式整齐的输入...

  • 01、FF、3E、27、7F
  • 55、EE、01、00
  • 21、FE、2B、00、1F
  • 37、*、18、?、00、37
  • 81、*、00、*、FF、91、?、11、?、FF
  • 20、31、7F、28、*、FF
  • 47 4F、20、50、4F、4D、45、?、21

来自愚蠢的坏用户的丑陋的草率输入...

  • 1,ff,3e,27,7f
  • 55、EE、1、00
  • 21,Fe, 2b,0, 1f
  • 37,*,18,?,00,37
  • 81、*、0、*、Ff、91、?,11、?,FF
  • 20、31、7f、28、*、FF
  • 47, 4F, 20, 50,4F,4D,45, ?,21

(p.s.,愚蠢的坏用户有时会放入难看的尾随空格,有时会放入难看的前导空格)

天哪,这已经变得毛茸茸的了。我有多达三个嵌套函数,但还远远没有完成。我以为这将是一个 20 分钟的打字练习。

这个问题之前已经解决了吗?

Visual Studio C# 是否已包含一个仅要求以逗号分隔的十六进制字节的属性?

我错过了森林里那棵明显的树吗?

StackOverflow 上自动建议的类似问题并没有真正回答这个问题,这让我感到惊讶。当然,我不是第一个遇到这种烦恼的人。欢迎提出建议

最佳答案

您可以使用正则表达式来做到这一点:

String input = "01, FF, 3E, 27, 7F";
String pattern = @"^([0-9A-F]{2},\s?)*[0-9A-F]{2}$";

bool matches = Regex.IsMatch(input, pattern);

正则表达式为^([0-9A-F]{2},\s?)*[0-9A-F]{2}$,即

^ - 开始
[0-9A-F] - 十六进制字符集
{2} - 该组中的两个字符
, - 只是逗号
\s? - 可选空间
* - 重复0次或多次

注意:如果您想在逗号后强制添加空格,请使用 ^([0-9A-F]{2},\s)*[0-9A-F]{2}$

注2:如果您只想允许一个字符并允许小写字母,请使用 ^([0-9A-Fa-f]{1,2},\s)*[0-9A- Fa-f]{1,2}$

关于c# - 验证用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22773975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com