我正在尝试使用“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
知道为什么不同的数字输出?
答案 0 :(得分:2)
20170119000004
不是有效的int值。最大的int值是2147483647
。这就是它返回错误的原因。
如果要检查字符串是否完全由数字组成,可以使用:
var isOnlyNumbers = RegEx.IsMatch(maf_seq_no, "^[0-9]+$");
答案 1 :(得分:2)
如果您只想查看string
是否仅由数字组成,您可以执行以下操作:
string str = "12345";
bool isAllDigits = str.All(char.IsDigit);
int
最高可以是2147483647(但它甚至可以是负数!),long
9223372036854775807(但它甚至可以是负数!)。有无符号版本可以包含更大的数字,但仍然是最大位数是“固定”!
答案 2 :(得分:1)
int.TryParse
会为false
返回"20170119000004"
,因为此值高于int.MaxValue
。
例如,您可以尝试long.TryParse
。
答案 3 :(得分:1)
它返回Int
,因为false
对于20170119000004
(int32)来说太大了。 int
maximum value为int
,或2 31 - 1。
改为使用long
,其最大值为2147483647
或
2 63 - 1。