我们如何在 C# 中从用户那里获取正确的字符串?
How we take correct string from user in C#?
当使用控制台应用程序从用户那里获取 "user name" 作为输入时.. 我怎样才能让他输入字符串而不是键盘上的 Enter 键作为输入字符串?**
当我想要你的名字时,我希望你不要输入空格然后输入密钥或输入密钥而不写你的名字
string name;
name = Console.ReadLine();
在这里,我不希望用户按 Enter 作为输入而不是他的名字
一般来说,您可以在用户输入用户名后应用规则,他们按[Enter]
表示。此时,您可以验证条目,如果不正确,则向他们显示一条消息,指出需要更改的内容,并再次提示他们。这一切都是在一个循环中完成的,其退出条件是一个有效的用户名。
为了简化事情,我将其放入一个辅助方法中,该方法具有一些参数,可以设置这些参数来执行一些通用规则。您也可以随时添加自己的规则:
public static string GetStringFromUser(string prompt, int minLength,
bool allowAlpha, bool allowNumeric, bool allowNonAlphaNumeric)
{
var errorMessage = new StringBuilder();
var input = string.Empty;
while (true)
{
errorMessage.Clear();
Console.Write(prompt);
input = Console.ReadLine();
if (input.Length < minLength)
{
errorMessage.AppendLine(
$" - Entry must be longer than {minLength} characters");
}
if (!allowAlpha && input.Any(c => char.IsLetter(c)))
{
errorMessage.AppendLine(" - Entry must not contain any letters");
}
if (!allowNumeric && input.Any(c => char.IsDigit(c)))
{
errorMessage.AppendLine(" - Entry must not contain any numbers");
}
if (!allowNonAlphaNumeric && input.Any(c => !char.IsLetterOrDigit(c)))
{
errorMessage.AppendLine(
" - Entry must not contain any non-alphanumeric characters");
}
if (errorMessage.Length == 0) break;
Console.WriteLine("\nThe following errors must be corrected:");
Console.WriteLine(errorMessage.ToString());
}
Console.WriteLine();
return input;
}
然后,要使用此功能,您只需传入要执行的规则即可。例如,我在下面指定用户名必须是 6 个字符,并且不能包含任何数字或非字母数字字符:
static void Main()
{
var userName = GetStringFromUser("Enter your user name: ", 6, true, false, false);
Console.WriteLine($"Welcome, {userName}!");
Console.Write("\nPress any key to exit...");
Console.ReadKey();
}
输出
当使用控制台应用程序从用户那里获取 "user name" 作为输入时.. 我怎样才能让他输入字符串而不是键盘上的 Enter 键作为输入字符串?**
当我想要你的名字时,我希望你不要输入空格然后输入密钥或输入密钥而不写你的名字
string name;
name = Console.ReadLine();
在这里,我不希望用户按 Enter 作为输入而不是他的名字
一般来说,您可以在用户输入用户名后应用规则,他们按[Enter]
表示。此时,您可以验证条目,如果不正确,则向他们显示一条消息,指出需要更改的内容,并再次提示他们。这一切都是在一个循环中完成的,其退出条件是一个有效的用户名。
为了简化事情,我将其放入一个辅助方法中,该方法具有一些参数,可以设置这些参数来执行一些通用规则。您也可以随时添加自己的规则:
public static string GetStringFromUser(string prompt, int minLength,
bool allowAlpha, bool allowNumeric, bool allowNonAlphaNumeric)
{
var errorMessage = new StringBuilder();
var input = string.Empty;
while (true)
{
errorMessage.Clear();
Console.Write(prompt);
input = Console.ReadLine();
if (input.Length < minLength)
{
errorMessage.AppendLine(
$" - Entry must be longer than {minLength} characters");
}
if (!allowAlpha && input.Any(c => char.IsLetter(c)))
{
errorMessage.AppendLine(" - Entry must not contain any letters");
}
if (!allowNumeric && input.Any(c => char.IsDigit(c)))
{
errorMessage.AppendLine(" - Entry must not contain any numbers");
}
if (!allowNonAlphaNumeric && input.Any(c => !char.IsLetterOrDigit(c)))
{
errorMessage.AppendLine(
" - Entry must not contain any non-alphanumeric characters");
}
if (errorMessage.Length == 0) break;
Console.WriteLine("\nThe following errors must be corrected:");
Console.WriteLine(errorMessage.ToString());
}
Console.WriteLine();
return input;
}
然后,要使用此功能,您只需传入要执行的规则即可。例如,我在下面指定用户名必须是 6 个字符,并且不能包含任何数字或非字母数字字符:
static void Main()
{
var userName = GetStringFromUser("Enter your user name: ", 6, true, false, false);
Console.WriteLine($"Welcome, {userName}!");
Console.Write("\nPress any key to exit...");
Console.ReadKey();
}
输出