解析有效字符串时,int.TryParse返回false

时间:2015-08-31 11:07:22

标签: c#

我试图检查字符串是否是有效数字。但这会返回false。这是为什么。

int IsNumber;
var parsed = int.TryParse("9876543210", NumberStyles.Number, null, out IsNumber);

if (parsed)
 {

 }
else
 {

 }

还尝试使用CultureInfo.CurrentCulture.NumberFormat,代替null。 在调试时,它永远不会遇到if条件。

3 个答案:

答案 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
}