如果来自输入字段的输入字符串是正确的二进制(或六进制)数字,我如何检查c#?
答案 0 :(得分:6)
using System.Globalization;
bool valid = int.TryParse(inputString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);
适用于没有前缀的十六进制数字。如果您不知道期望的数字类型,可以使用
bool isHex = inputString.Length > 2 &&
inputString.Substring(0, 2).ToLowerInvariant() == "0x" &&
int.TryParse(inputString.Substring(2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);
同时检查并解析字符串。对于二进制我会使用
Regex.IsMatch(inputString, "^[01]+$");
您应该使用inputString = inputString.Trim()
使应用程序对“非标准输入”更加宽容。
答案 1 :(得分:3)
您可以使用以下代码:
int dummy;
bool isHex = int.TryParse(str,
NumberStyles.HexNumber,
CultureInfo.InvariantCulture,
out dummy);
对于二进制文件,没有内置函数,但您可以使用以下内容:
static bool isbin(string s)
{
foreach (var c in s)
if (c != '0' && c != '1')
return false;
return true;
}
答案 2 :(得分:0)
尝试
Regex.IsMatch("0x6868FC", "\b0x[a-fA-F0-9]+\b");
如果您希望用户输入以0x开头的十六进制数。