【问题标题】:Validate input field in C#在 C# 中验证输入字段
【发布时间】:2011-11-22 16:57:14
【问题描述】:

我有一个应该只输入数字的输入字段。

如何验证字符串? 这样可以吗:

string s = "12345";
double num;
bool isNum = double.TryParse(s, out num);

或者.Net 对此有解决方案吗?

【问题讨论】:

  • TryParse .Net 解决方案。

标签: c# .net string validation textfield


【解决方案1】:

单行答案。完成这项工作。

string s = "1234";
if (s.ToCharArray().All(x => Char.IsDigit(x)))
{
    console.writeline("its numeric");
}
else
{
    console.writeline("NOT numeric");
}

【讨论】:

  • 据我所知,这正确回答了这个问题。将字符串解析为双精度将允许诸如“-”之类的字符,我从问题中假设这不是必需的。又漂亮又优雅!
【解决方案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()

【讨论】:

  • 请注意,此方法还允许将字符串解析为数字。 (即,如果您只想将数字作为字符,那么这不是 100% 正确的)。
【解决方案3】:

您的解决方案没问题,但您可以创建一个为您完成这项工作的方法。请记住,由于文化原因,它可能不适用于其他国家。像下面这样的呢?

public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
    Double result;
    return Double.TryParse(val,NumberStyle,
        System.Globalization.CultureInfo.CurrentCulture,out result);
}

【讨论】:

    【解决方案4】:

    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);
    }
    

    【讨论】:

      【解决方案5】:

      您可以在 ASP.NET 中使用Regular Expression Validators 来约束输入。

      【讨论】:

        【解决方案6】:

        您为什么不尝试通过 UI 验证输入?我不知道你是否在使用 asp.net,如果是这样,RegularExpressionValidator 通常是一个有效的解决方案。 (http://www.w3schools.com/aspnet/control_regularexpvalidator.asp)。希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-08
          • 2021-12-11
          • 1970-01-01
          • 1970-01-01
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 2021-05-27
          相关资源
          最近更新 更多