我有一个输入字段,应该只接受数字。在C中验证输入字段#
如何验证字符串? 会这样:
string s = "12345";
double num;
bool isNum = double.TryParse(s, out num);
或者.net有一个解决方案吗?
我有一个输入字段,应该只接受数字。在C中验证输入字段#
如何验证字符串? 会这样:
string s = "12345";
double num;
bool isNum = double.TryParse(s, out num);
或者.net有一个解决方案吗?
你所做的事看起来是正确的。
您还可以创建一个扩展方法,使其更容易:
public static bool IsNumeric(this object _obj)
{
if (_obj == null)
return false;
bool isNum;
double retNum;
isNum = Double.TryParse(Convert.ToString(_obj), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
return isNum;
}
,那么你可以这样做:
s.IsNumeric()
请注意,此方法也将允许可以解析为数字的字符串。 (即如果你只想要数字作为字符,那么这不是100%正确的)。 –
您可以使用Regular Expression Validators在ASP.NET中限制输入。
为什么不尝试通过UI验证输入?我不知道你是否使用asp.net,如果是的话,RegularExpressionValidator通常是一个有效的解决方案。 (http://www.w3schools.com/aspnet/control_regularexpvalidator.asp)。希望这可以帮助!
你的解决方案还行,但你可以创建一个方法为你完成这项工作。请记住,由于这种文化,它可能不适用于其他国家。那如下的东西呢?
public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
Double result;
return Double.TryParse(val,NumberStyle,
System.Globalization.CultureInfo.CurrentCulture,out result);
}
VB.NET有IsNumeric函数,但是你有什么是在C#中的方法。为了使其可应用范围只写一个扩展方法上string
public static bool IsNumeric(this string input)
{
if (string.IsNullOrWhitespace(input))
return false;
double result;
return Double.TryParse(input, out result);
}
单一行答案。做这份工作。
string s = "1234";
if (s.ToCharArray().All(x => Char.IsDigit(x)))
{
console.writeline("its numeric");
}
else
{
console.writeline("NOT numeric");
}
我得试试这个!看起来不错 – hogni89
据我所知,这正确地回答了这个问题。将字符串解析为double将允许我从问题中假设的字符(如“ - ”)不是必需的。又好又高雅! –
没什么不对的 –
TryParse _is_ a .Net解决方案。 –
然后TryParse它是:) – hogni89