欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 判断是不是合法的16进制字符串

程序员文章站 2022-05-03 10:39:50
方法一:用正则表达式判断,代码如下: 线性遍历输入的十六进制字符串中是否包含非十六进制字符,代码如下:方法二: 通过调用上述方法就可以清楚的知道输入的十六进制字符是否正确,然后为程序的下一个工作提供条件。 还有一种方法性能比较慢 就放到文章最后面了 ......

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

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;
        }

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

还有一种方法性能比较慢 就放到文章最后面了

/// <summary>
        /// 判断是否为合法的16进制字符串
        /// </summary>
        /// <param name="hexstring"></param>
        /// <returns></returns>
        public bool ishexadecimal(string hexstring)
        {
            try
            {
                hexstring = hexstring.replace(" ", "").replace("\r", "").replace("\n", "");
                if ((hexstring.length % 2) != 0)
                    hexstring += " ";
                byte[] returnbytes = new byte[hexstring.length / 2];
                for (int i = 0; i < returnbytes.length; i++)
                    returnbytes[i] = convert.tobyte(hexstring.substring(i * 2, 2), 16);
            }
            catch
            {
                return false;
            }
            return true;
        }
        #endregion