【问题标题】:Validate user input C# (console)验证用户输入 C#(控制台)
【发布时间】:2011-10-13 13:31:56
【问题描述】:

我有以下代码:

aVariable =  int.Parse(Console.ReadLine());

我遇到的一个问题是我找不到任何支持材料来帮助验证用户输入,例如,如果用户按下字母 a,这只会杀死程序。

我能做什么?我在哪里可以找到像样的教程?

【问题讨论】:

  • 您可以为此使用 TryParse .. 只需 google 即可获得此方法。或者您可以捕获异常以防止您的程序崩溃
  • @Rob 你应该用你的评论来回答这个问题。你是对的。
  • 今天很愤怒,所以我先尝试评论,然后才得到-100票哈哈

标签: c# validation console


【解决方案1】:

不要使用Parse 方法,而是使用TryParse

int age;

bool isValidInt = int.TryParse(Console.ReadLine(), out age);

【讨论】:

    【解决方案2】:

    您可以为此使用 TryParse.. 只需 google 即可获得此方法。或者您可以捕获异常以防止程序崩溃

    【讨论】:

      【解决方案3】:

      int.Parse 在无法解析字符串时抛出 FormatException。您可以捕获此异常并处理它,例如显示错误消息。

      另一种方法是使用 TryParse:

      int number = 0;
      bool result = Int32.TryParse(value, out number);
      if (result)
      {
         Console.WriteLine("Converted '{0}' to {1}.", value, number);         
      }
      

      【讨论】:

        【解决方案4】:

        在控制台应用程序中验证用户输入与在 Winforms 应用程序中没有什么不同。它也非常类似于在 ASP.NET 应用程序中验证用户输入,只是您没有很好的验证控件。

        如果您来自 ASP.NET 背景,请了解人们如何使用 CustomValidators - 注意代码隐藏并忽略客户端验证。

        此外,您可以像在 ASP.NET 应用程序中一样轻松地在控制台应用程序中使用正则表达式。

        可能没有专门针对控制台应用程序提及验证的原因是输入验证就是输入验证。方法几乎在所有地方都相同。与 ASP.NET 相比,唯一的区别是自定义控件的存在可以帮助您完成这项工作。

        【讨论】:

        • 注意:我故意没有回答使用 TryParse,因为这仅回答了他的具体示例,现在一般如何在控制台应用程序中进行验证。
        • 更不用说如何验证一个数是否为整数,之前已经回答过了。 stackoverflow.com/questions/5395630/…
        【解决方案5】:

        改用Int32.TryParse 并测试是否成功转换。

        Int32 val;
        if (Int32.TryParse(userInput, out val))
        {
          // val is now the user input as an integer
        }
        else
        {
          // bad user input
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-30
          • 2015-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多