} while (Regex.IsMatch(Console.ReadLine(), @"^[a-zA-Z]+$"));
}
先感谢您。
慕田峪7331174
浏览 156回答 1
1回答
料青山看我应如是
问题是你要返回 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。对我来说似乎更容易,而且可能更快(懒得做基准测试)。