繁体   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