所以我想使用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.");
}
}
所以我想这样做,但我不想检查整数值,而是想检查一个数值。所以,如果有人能告诉我我可以用什么方法,我会非常高兴。 提前谢谢!
答案 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);
}