[英]Validate input field in C#
我有一個輸入字段,應該只取數字。
如何驗證字符串? 這樣可以嗎:
string s = "12345";
double num;
bool isNum = double.TryParse(s, out num);
還是.Net為此提供了解決方案?
單行答案。 這份工作。
string s = "1234";
if (s.ToCharArray().All(x => Char.IsDigit(x)))
{
console.writeline("its numeric");
}
else
{
console.writeline("NOT numeric");
}
你所做的一切看起來是正確的。
您還可以創建一個擴展方法以使其更容易:
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()
您的解決方案還可以,但是您可以創建一種可以為您完成此工作的方法。 請記住,由於這種文化,它可能不適用於其他國家。 像下面這樣的東西呢?
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);
}
您可以在ASP.NET中使用正則表達式驗證器來約束輸入。
您為什么不嘗試通過UI驗證輸入? 我不知道您是否正在使用asp.net,如果這樣,則RegularExpressionValidator通常是一個有效的解決方案。 (http://www.w3schools.com/aspnet/control_regularexpvalidator.asp)。 希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.