TryParse方法返回不同的结果



我正在尝试检查字符串具有数字或不使用" tryparse"方法的数字。对于字符串" 101"中的数字,它返回" true",而对于字符串中的数字," 20170119000004"返回" false"。

我的代码:

int n;
string maf_seq_no="";
maf_seq_no = "101";
Console.WriteLine(int.TryParse(maf_seq_no, out n)); //OUTPUT True
maf_seq_no = "20170119000004";
Console.WriteLine(int.TryParse(maf_seq_no, out n)); //OUTPUT False

知道为什么数字的输出不同?

如果您只想检查string是否仅由数字组成,则可以做:

string str = "12345";
bool isAllDigits = str.All(char.IsDigit);

int可以在最大2147483647处(但甚至可能为负!),long 92233720368547775807(但甚至可能为负!)。有一些未签名的版本可以包含更大的数字,但是数字的最大数量仍然是"固定"!

20170119000004不是有效的int值。最大的可能INT值是2147483647。这就是为什么它返回false。

如果要检查字符串是否完全由数字组成,则可以使用:

var isOnlyNumbers = RegEx.IsMatch(maf_seq_no, "^[0-9]+$");

int.TryParse返回"20170119000004"false,因为此值高于int.MaxValue

您可以尝试long.TryParse

它返回false,因为20170119000004对于int(INT32)太大。int'S 最大值2147483647,或2 31 -1。

使用 long 而不是,其最大值为9223372036854775807或 2 63 -1。

最新更新