为什么Int32.TryParse为数字返回false?

时间:2014-08-14 10:15:39

标签: c# parsing int tryparse

我有这段代码:

string sPhone = "420777777777";
int rPhone;
bool valid = Int32.TryParse(sPhone, out rPhone); //false
if (!valid)
 return "";
return String.Format("{0:+### ### ### ###}", rPhone);

我想格式化电话号码,因此我将字符串转换为int,但valid的值始终为false。如何将此字符串转换为int?我也在尝试int.TryParseConvert.ToInt32。没有任何效果。

2 个答案:

答案 0 :(得分:9)

因为Int32.MaxValue 2147483647 所以,您的字符串“420777777777”的转换永远不会是Int32的有效值;

使用

string sPhone = "420777777777";
long rPhone;
bool valid = Int64.TryParse(sPhone, out rPhone); 
return (!valid ? "" : string.Format("{0:+### ### ### ###}", rPhone));  

答案 1 :(得分:0)

Int32是32位数字,对于UInt32,它的最大值是2147483647或4294967295。如果你有64位架构,你可以尝试使用long.TryParse。