方法一:用正则表达式判断,代码如下:
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
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论