【问题标题】:How we take correct string from user in C#?我们如何在 C# 中从用户那里获取正确的字符串?
【发布时间】:2018-01-30 04:53:11
【问题描述】:

当使用控制台应用程序将用户的“用户名”作为输入时..如何让他输入字符串而不是键盘中的 Enter 键作为输入字符串?**

当我想要你的名字时,我希望你不要输入空格然后输入密钥或输入密钥而不写你的名字

string name;
name = Console.ReadLine();

在这里,我不希望用户按 Enter 作为输入而不是他的名字

【问题讨论】:

  • 不清楚您使用的是控制台应用程序还是表单应用程序。但是,我的猜测是,如果用户名字段为空,您可以提示用户输入有效的用户名。也许您应该使用您尝试过的一些示例代码来编辑您的问题。
  • @Hari 控制台应用
  • @AhmedElemam,处理该异常以再次提示用户输入用户名。您还可以让用户更清楚地知道,需要指定用户名才能继续执行任何应用程序......此处发布的一些示例代码可能有助于了解您的问题的整体情况。
  • 如果用户不能按[Enter],您希望用户按什么来表示他们已完成输入用户名?
  • 点赞this...

标签: c# .net c#-4.0 c#-3.0


【解决方案1】:

一般来说,您可以在输入用户名后将规则应用于用户名,他们通过按[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();
}

输出

【讨论】:

  • 路过,喜欢代码的解释。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多