TryParse用于C#中的数字?

时间:2013-11-07 07:19:59

标签: c# tryparse

所以我想使用TryParse方法,但到目前为止我只能使用整数或双值。但是,我想检查值是否为数字,如果不是(例如,如果是字符串)则获取false值。像IsDigit()这样的东西就是Java。

static void Main()
    {
        int number;
        Console.Write("Enter a number: ");
        bool result = Int32.TryParse(Console.ReadLine(), out number); 
        if (result)
        {
            Console.WriteLine("The input number is an integer.");
        }

        else
        {
            Console.WriteLine("The input number is not an integer.");
        }
    }

所以我想这样做,但我不想检查整数值,而是想检查一个数值。所以,如果有人能告诉我我可以用什么方法,我会非常高兴。 提前谢谢!

6 个答案:

答案 0 :(得分:2)

使用double

double number;
bool result = double.TryParse(Console.ReadLine(), out number); 

这将解析任何实数。

答案 1 :(得分:2)

TryParse for decimal或double类型是内置方法的限制。如果你想要更多,你必须自己解析字符串。可以使用正则表达式轻松完成,例如

^-?[0-9]+\.?[0-9]*([Ee][+-]?[0-9]+)?$

答案 2 :(得分:1)

对于单个字符,有Char.IsDigit()。在这种情况下,您可能需要查看Console.ReadKey()而不是阅读整行。顺便说一句,Char.IsDigit()也匹配数字from other cultures

对于多个角色,您需要考虑您想要接受的内容。小数,指数,负数或只是多位数字符?

答案 3 :(得分:1)

bool result = double.TryParse(mystring, out num);

double.TryParse也适用于整数。

答案 4 :(得分:0)

您可以尝试使用正则表达式

var regex = new Regex(@"^-*[0-9\.]+$");
var m = regex.Match(text);
if (m.Sucess)
    {
        Console.WriteLine("The input number is an integer.");
    }

    else
    {
        Console.WriteLine("The input number is not an integer.");
    }

您也可以通过将分隔符包含在正则表达式中来允许分隔符。

答案 5 :(得分:0)

static bool enteredNumber()
{
    int intValue;
    double doubleValue;
    Console.Write("Enter a number: ");
    string input = Console.ReadLine();
    return Int32.TryParse(input, out intValue) ? true : double.TryParse(input, out doubleValue);
}