如何在输入提示期间禁止控制台中的所有非数字输入?

时间:2011-03-18 15:06:55

标签: c# validation input console

在这里谈论控制台。

这个想法是,如果用户在控制台的输入提示中按下除数字(字母键和小键盘上方的键)之外的任何键,则不会输入任何内容。它好像控制台将忽略任何非数字键按下。

如何以正确的方式做到这一点?

3 个答案:

答案 0 :(得分:9)

尝试使用ReadKey方法:

while (processing input)
{
  ConsoleKeyInfo input_info = Console.ReadKey (true); // true stops echoing
  char input = input_info.KeyChar;

  if (char.IsDigit (input))
  {
     Console.Write (input);
     // and any processing you may want to do with the input
  }
}

答案 1 :(得分:1)

private static void Main(string[] args) {

    bool inputComplete = false;
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    while (!inputComplete ) {

        System.ConsoleKeyInfo key = System.Console.ReadKey(true);

        if (key.Key == System.ConsoleKey.Enter ) {                
            inputComplete = true;
        }
        else if (char.IsDigit(key.KeyChar)) {
            sb.Append(key.KeyChar);
            System.Console.Write(key.KeyChar.ToString());
        }
    }

    System.Console.WriteLine();
    System.Console.WriteLine(sb.ToString() + " was entered");
}

答案 2 :(得分:0)

这个小实验就是这样的:

static void Main()
{
    while (true)
    {
        var key = Console.ReadKey(true);
        int i;
        if (int.TryParse(key.KeyChar.ToString(), out i))
        {
            Console.Write(key.KeyChar);
        }
    }
}