我正在尝试检查字符串具有数字或不使用" 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。