我试图检查字符串是否是有效数字。但这会返回false。这是为什么。
int IsNumber;
var parsed = int.TryParse("9876543210", NumberStyles.Number, null, out IsNumber);
if (parsed)
{
}
else
{
}
还尝试使用CultureInfo.CurrentCulture.NumberFormat,
代替null
。
在调试时,它永远不会遇到if条件。
答案 0 :(得分:11)
这应该有效
long IsNumber;
var parsed = long.TryParse("9876543210", NumberStyles.Number, null, out IsNumber);
if (parsed)
{
}
else
{
}
你的代码没有用,因为int.Max是2147483647.如果你想检查字符串中的所有字符是否都是数字,你可以使用Char.IsDigit:
var number = yourString.All(Char.IsDigit);
它适用于大于最大值的数字(9223372036854775807)
答案 1 :(得分:1)
使用BigInteger.TryParse
方法。 BigInteger
表示任意大的有符号整数。
将此添加到页面顶部的使用指令:
using System.Numerics;
然后:
BigInteger IsNumber;
var parsed = BigInteger.TryParse("9876543210", NumberStyles.Integer, null, out IsNumber);
if (parsed)
{
}
else
{
}
答案 2 :(得分:1)
如果您正在使用它进行验证(如您所述)并且您不需要将其转换为数字类型,请改用正则表达式。此正则表达式为您提供信息,字符串是否仅包含数字
var stringToValidate = "9876543210"
Regex regex = new Regex(@"^\d$");
if (regex.IsMatch(compare))
{
//validation passed
}