Запрещение пользователю вводить целые числа в строковые переменные в C # - PullRequest
0 голосов
/ 15 января 2019

Если я напишу следующий код (внутри метода Main):

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

где FirsName является свойством класса Student, как я могу запретить пользователю вводить целые символы? Можно ли это сделать с помощью блока try-catch?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы были не очень конкретны, но на основании предоставленных вами данных вы можете сделать что-то подобное, используя 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();
        }
    }
}

Вот пример в dotnetfiddle.

0 голосов
/ 15 января 2019

Если вы хотите запретить пользователю «вводить» числовые символы, вы можете сделать следующее.

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();      
...