2010-08-23 139 views
0

基本上我希望最多200個字符出現在Console.ReadLine()中,以便在字符開始被抑制之前進行用戶輸入。我希望它像TextBox.MaxLength除了控制檯輸入。我將如何去做這件事?如何限制控制檯輸入的字符數? C#

而且我不希望做input.Substring(0, 200).

解決:

我用這是Console.ReadKey的一個循環我自己的ReadLine()函數。

它看起來像這樣,主要有:

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(); 

謝謝大家

+0

什麼是總體情況? – obelix 2010-08-23 03:04:20

回答

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); 
} 

EDIT

原來,Console.ReadKey()優選Console.Read()

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

+0

是的,我剛剛使用Console.ReadKey解決了我的問題 – Marlon 2010-08-23 03:59:19

8

有沒有辦法來限制進入的ReadLine文本。作爲MSDN article解釋,

的線被定義爲 字符,隨後是滑架 返回(十六進制0x000d),線路 飼料(十六進制0x000a),或的Environment.NewLine

的 值的序列

你可以做的是,在不允許超過200的循環中使用ReadKey,並且如果用戶鍵入Environment.NewLine則中斷。