【问题标题】:How can I limit the number of characters for a console input? C#如何限制控制台输入的字符数? C#
【发布时间】:2011-04-02 10:46:30
【问题描述】:

基本上我希望 Console.ReadLine() 在字符开始被抑制之前最多出现 200 个字符供用户输入。我希望它像 TextBox.MaxLength 一样,除了控制台输入。我该怎么办?

我不想这样做input.Substring(0, 200).

已解决:

我使用了自己的 ReadLine 函数,它是 Console.ReadKey() 的循环。

基本上是这样的:

StringBuilder sb = new StringBuilder();
bool loop = true;
while (loop)
{
    ConsoleKeyInfo keyInfo = Console.ReadKey(true); // won't show up in console
    switch (keyInfo.Key)
    {
         case ConsoleKey.Enter:
         {
              loop = false;
              break;
         }
         default:
         {
              if (sb.Length < 200)
              {
                  sb.Append(keyInfo.KeyChar);
                  Console.Write(keyInfo.KeyChar);
              }
              break;
         }
    }
}

return sb.ToString();

谢谢大家

【问题讨论】:

  • 整体场景如何?

标签: c# console-application user-input


【解决方案1】:

没有办法限制在 ReadLine 中输入的文本。正如MSDN article 解释的那样,

一行被定义为一个序列 字符后跟一个马车 返回(十六进制 0x000d),一行 提要(十六进制 0x000a),或 Environment.NewLine的值

您可以做的是,在不允许超过 200 的循环中使用 ReadKey,如果用户键入 Environment.NewLine 则中断。

【讨论】:

    【解决方案2】:

    如果您可以使用Console.Read(),则可以循环播放直到达到 200 个字符或输入回车键。

    StringBuilder sb = new StringBuilder();
    int i, count = 0;
    
    while ((i = Console.Read()) != 13)   // 13 = enter key (or other breaking condition)
    {
        if (++count > 200)  break;
        sb.Append ((char)i);
    }
    

    编辑

    原来Console.ReadKey()Console.Read() 更受欢迎。

    http://msdn.microsoft.com/en-us/library/471w8d85.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 2015-07-22
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多