c#怎么判断16进制输入格式是否正确?

一个文本框输入一段16进制文本,然后从串口发送出去,但是一旦输入格式错误发送时候程序就会卡死,有没有比较简便完善的检测方法。... 一个文本框输入一段16进制文本,然后从串口发送出去,但是一旦输入格式错误发送时候程序就会卡死,有没有比较简便完善的检测方法。 展开
 我来答
wjshan0808
推荐于2018-03-01 · TA获得超过601个赞
知道小有建树答主
回答量:696
采纳率:74%
帮助的人:366万
展开全部

        要判断16进制输入格式是否正确?

        首先我们要知道16进制字符只包含:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,a,b,c,d,e,f 共22个字符。

        那么思路就来了就是对输入的16进制字符进行一一判断如果包含了不在16进制字符集里面的字符,该输入就是不正确的。

        方法有很多列如:

方法一:

        用正则表达式判断,代码如下:

        public const string PATTERN = @"([^A-Fa-f0-9]|\s+?)+";
        /// <summary>
        /// 判断十六进制字符串hex是否正确
        /// </summary>
        /// <param name="hex">十六进制字符串</param>
        /// <returns>true:不正确,false:正确</returns>
        public bool IsIllegalHexadecimal(string hex)
        {
            return System.Text.RegularExpressions.Regex.IsMatch(hex, PATTERN);
        }

方法二:

        线性遍历输入的十六进制字符串中是否包含非十六进制字符,代码如下:

        public IList<char> HexSet = new List<char>() 
        { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','a','b','c','d','e','f' };       
        /// <summary>
        /// 判断十六进制字符串hex是否正确
        /// </summary>
        /// <param name="hex">十六进制字符串</param>
        /// <returns>true:不正确,false:正确</returns>
        public bool IsIllegalHexadecimal(string hex)
        {
            foreach (char item in hex)
            {
                if (!HexSet.Contains<char>(item))
                    return true;
            }
            return false;
        }

通过调用上述方法就可以清楚的知道输入的十六进制字符是否正确,然后为程序的下一个工作提供条件。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式