为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕田峪7331174 2021-07-01 10:05:58
我想让一个用户只被允许输入字母,这是我迄今为止尝试过的,但是当用户输入一个数字或其他任何东西时,控制台应用程序就会继续。 static public string Ask(string question)    {        do        {            Console.Write(question);            return Console.ReadLine();        } while (Regex.IsMatch(Console.ReadLine(), @"^[a-zA-Z]+$"));    }先感谢您。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

问题是你要返回 first 的结果,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;

}

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


查看完整回答
反对 回复 2021-07-18
  • 1 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信