我有一个输入字段,应该只接受数字。
如何验证字符串? 这样可以吗:
string s = "12345";
double num;
bool isNum = double.TryParse(s, out num);
或.Net有解决方案吗?
答案 0 :(得分:3)
单一行答案。做的工作。
string s = "1234";
if (s.ToCharArray().All(x => Char.IsDigit(x)))
{
console.writeline("its numeric");
}
else
{
console.writeline("NOT numeric");
}
答案 1 :(得分:2)
你所做的一切看起来是正确的。
您还可以创建一个扩展方法,以便更轻松:
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()
答案 2 :(得分:1)
您的解决方案没问题,但您可以创建一个为您完成此任务的方法。请记住,由于文化原因,它可能对其他国家不起作用。如下所示呢?
public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
Double result;
return Double.TryParse(val,NumberStyle,
System.Globalization.CultureInfo.CurrentCulture,out result);
}
答案 3 :(得分:1)
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);
}
答案 4 :(得分:0)
您可以在ASP.NET中使用Regular Expression Validators来约束输入。
答案 5 :(得分:0)
为什么不尝试通过UI验证输入?我不知道你是否使用asp.net,如果是这样,RegularExpressionValidator通常是一个有效的解决方案。 (http://www.w3schools.com/aspnet/control_regularexpvalidator.asp)。希望这有帮助!