如何限制控制台输入的字符数? C#

时间:2010-08-23 02:58:33

标签: c# console-application user-input

基本上我希望在开始被抑制字符之前,在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();

谢谢大家

2 个答案:

答案 0 :(得分:8)

无法限制输入ReadLine的文本。正如MSDN article所解释的那样,

  

一条线被定义为一系列   字符后跟一个马车   返回(十六进制0x000d),一行   feed(十六进制0x000a),或者   Environment.NewLine

的值

你可以做的是,在一个不允许超过200的循环中使用ReadKey,并在用户键Environment.NewLine时中断。

答案 1 :(得分:3)

如果您可以使用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