Как мога да огранича броя на знаците за въвеждане на конзола? ° С#

По принцип искам максимум 200 знака да се появят в Console.ReadLine() за въвеждане от потребителя, преди знаците да започнат да се потискат. Искам го като 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();

Благодаря на всички


person Marlon    schedule 23.08.2010    source източник
comment
какъв е общият сценарий?   -  person obelix    schedule 23.08.2010


Отговори (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

person Edward Leno    schedule 23.08.2010

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

Редът се дефинира като поредица от знаци, последвана от връщане на каретка (шестнадесетично 0x000d), подаване на ред (шестнадесетично 0x000a) или стойността на Environment.NewLine

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

person Traveling Tech Guy    schedule 23.08.2010