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