允许用户仅输入字符串作为答案

时间:2018-06-01 20:46:00

标签: c# asp.net .net

我希望只允许用户输入字母,这是我到目前为止所尝试的,但是当用户输入数字或其他任何内容时,控制台应用程序就会继续。

 static public string Ask(string question)
    {
        do
        {
            Console.Write(question);
            return Console.ReadLine();

        } while (Regex.IsMatch(Console.ReadLine(), @"^[a-zA-Z]+$"));

    }

提前谢谢。

1 个答案:

答案 0 :(得分:4)

问题是你要返回第一个Console.ReadLine()的结果,所以你的循环永远不会继续while子句。

您需要做的是创建一个字符串变量并赋值,然后在您的while子句中检查它:

public static string Ask(string question)
{
    string input;
    do
    {
        Console.Write(question);

        //Assigns the user input to the 'input' variable
        input = Console.ReadLine();

    } //Checks if any character is NOT a letter 
    while (input.Any(x => !char.IsLetter(x)));

    //If we are here then 'input' has to be all letters
    return input;
}

注意我也在使用Linq的Any()而不是Regex。对我来说似乎更容易,可能更快(懒得基准测试)。

小提琴here