C#检查ConsoleKeyInfo.KeyChar是否为数字

use*_*664 5 c# input

ConsoleKeyInfo CKI = Console.ReadKey(true);
Run Code Online (Sandbox Code Playgroud)

CKI.KeyChar是字符输入的unicode等价如果我在控制台提示符中按'1',CKI.KeyChar将为49,而不是值'1'.

如何获得值'1'?

我知道这是一种获得输入的狡猾方式,但它是我老师想要的方式,所以我不能这样做.

编辑:我需要用户提供的值,因为我将不得不检查它是否小于9

Ice*_*ind 6

用这个:

char.IsDigit(CKI.KeyChar);
Run Code Online (Sandbox Code Playgroud)

如果您需要将其转换为数字,请使用以下命令:

int myNumber = int.Parse(CKI.KeyChar.ToString())
Run Code Online (Sandbox Code Playgroud)

要检查它是否小于9,那么你这样做:

if (myNumber < 9)
{
     // Its less than 9. Do Something
} else {
     // Its not less than 9. Do something else
}
Run Code Online (Sandbox Code Playgroud)


Bra*_*tie 6

使用该.KeyChar属性并与进行比较Char.IsNumber

要获得等效的数值,可以使用Int32.ParseInt32.TryParse

Int32 number;
if (Int32.TryParse(cki.KeyChar.ToString(), out number))
{
  Console.WriteLine("Number: {0}, Less than 9?: {1}", number, number < 9);
}
Run Code Online (Sandbox Code Playgroud)

测试应用:

using System;

namespace Test
{
    public static void Main()
{
    Console.WriteLine("Press CTRL+C to exit, otherwise press any key.");
    ConsoleKeyInfo cki;
    do
    {
        cki = Console.ReadKey(true);
        if (!Char.IsNumber(cki.KeyChar))
        {
            Console.WriteLine("Non-numeric input");
        }
        else
        {
            Int32 number;
            if (Int32.TryParse(cki.KeyChar.ToString(), out number))
            {
                Console.WriteLine("Number received: {0}; <9? {1}", number, number < 9);
            }
            else
            {
                Console.WriteLine("Unable to parse input");
            }
        }
    }
    while (cki.KeyChar != 27);
}
}
Run Code Online (Sandbox Code Playgroud)