簡體   English   中英

驗證C#中的輸入字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM