2010-08-23 125 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则中断。