防止用户在C#中向字符串变量输入整数

时间:2019-01-14 23:38:10

标签: c# error-handling properties try-catch

如果我在Main方法内编写以下代码:

Console.Write("First name: ");
student.FirstName = Console.ReadLine();

其中FirsName是Student类的属性,如何防止用户输入整数字符?可以使用try-catch块完成此操作吗?

2 个答案:

答案 0 :(得分:1)

如果要阻止用户“输入”数字字符,可以执行以下操作。

var value = new StringBuilder();
var run = true;
while (run)
{
    var inputKey = Console.ReadKey(true);
    switch (inputKey.Key)
    {
        case ConsoleKey.Enter:
            run = false;
            Console.WriteLine();
            break;
        case ConsoleKey.Backspace:
            value.Append(inputKey.KeyChar);
            break;
        default:
            if (!char.IsDigit(inputKey.KeyChar))
                value.Append(inputKey.KeyChar);
            Console.Write(inputKey.KeyChar);
            break;
    }

}

var name = value.ToString();      

答案 1 :(得分:0)

您不是很专一,但是根据您提供的数据,您可以使用try catch执行以下操作:

class Program
{
    static void Main(string[] args)
    {
        Student student = new Student();
        try
        {
            Console.Write("First name: ");
            student.FirstName = Console.ReadLine();
            ValidateMyString(student.FirstName);
            Console.ReadLine();
        }
        catch(Exception e)
        {
            throw e;
        }
    }

    static void ValidateMyString(string s)
    {
        if (s.Any(char.IsDigit))
        {
            throw new FormatException();
        }
    }
}

Here a example in dotnetfiddle.