字母串验证

bad*_*boy 1 .net c#

我对字符串和int感到困惑.并且无法验证名称是否没有数字和奇怪的charchters.az和AZ很好.我理解do while循环和使用sentinel.我在这里看到了Regex,但由于某些我不知道的原因它在我的代码中不起作用.我宁愿选择一个我能理解的简单解决方案.我在我的代码中验证int工作得很好,但是验证名称会得到bool和int错误.

    static void Main(string[] args)
    {
        int age;
        double mileage;
        string strInput, name;
        bool isValid;

        DisplayApplicationInformation();

        DisplayDivider("Start Program");
        Console.WriteLine();

        DisplayDivider("Get Name");
        strInput = GetInput("your name");
        name = strInput;
        Console.WriteLine("Your name is: " + name);
        Console.WriteLine();

        do
        {
        DisplayDivider("Get Age");
        strInput = GetInput("your age");
        isValid = int.TryParse(strInput, out age);
        if (!isValid || (age <= 0))
        {
            isValid = false;
            Console.WriteLine("'" + strInput + "' is not a valid age entry. Please retry...");
        }
        }while (!isValid);
        Console.WriteLine("Your age is: " + age);
        //age = int.Parse(strInput);
        //Console.WriteLine("Your age is: " + age);
        Console.WriteLine();

        do
        {
        DisplayDivider("Get Mileage");
        strInput = GetInput("gas mileage");
        isValid = double.TryParse(strInput, out mileage);
        if (!isValid || (mileage <= 0))
        {
            isValid = false;
            Console.WriteLine("'" + strInput + "' is not a valid mileage entry. Please retry...");
        }
        } while (!isValid);
        Console.WriteLine("Your age is: " + mileage);
        //mileage = double.Parse(strInput);
        //Console.WriteLine("Your car MPT is: " + mileage);

        TerminateApplication();
    }
Run Code Online (Sandbox Code Playgroud)

Ric*_*ers 5

尽管我建议你使用一个简单的正则表达式,但你指出你想要一个不同的解决方案.

看看这个问题,第一个答案是正则表达式解决方案,但第二个答案可能会回答你的问题:

bool result = input.All(Char.IsLetter);
Run Code Online (Sandbox Code Playgroud)

正如Chris Lively指出的那样,如果你在名称中允许一个空格,那么你可以通过以下方式验证:

bool result = input.Replace(" ", "").All(Char.IsLetter);
Run Code Online (Sandbox Code Playgroud)

  • @DJKRAZE:在这种情况下使用:bool result = input.Replace("","").All(Char.IsLetter); 比正则表达还容易 (2认同)