我想让一个用户只被允许输入字母,这是我迄今为止尝试过的,但是当用户输入一个数字或其他任何东西时,控制台应用程序就会继续。 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。对我来说似乎更容易,而且可能更快(懒得做基准测试)。
- 1 回答
- 0 关注
- 155 浏览
添加回答
举报
0/150
提交
取消