Как я могу ограничить количество символов для ввода с консоли?C # - PullRequest
0 голосов
/ 23 августа 2010

Как правило, я хочу, чтобы в 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 ]

8 голосов
/ 23 августа 2010

Нет способа ограничить текст, введенный в ReadLine. Как объясняется в статье MSDN ,

Строка определяется как последовательность символы, сопровождаемые кареткой возврат (шестнадцатеричный 0x000d), строка подача (шестнадцатеричное 0x000a) или значение Environment.NewLine

То, что вы можете сделать, это использовать ReadKey в цикле, который не позволяет перейти более 200, и прерывается, если пользовательские ключи Environment.NewLine.

3 голосов
/ 23 августа 2010

Если вы можете использовать Console.Read(), вы можете циклически проходить, пока не наберете 200 символов или пока не введете клавишу ввода.* Оказывается, что Console.ReadKey() предпочтительнее Console.Read().

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

...