如何将字符串值转换为int,以便它不跳过前面的0?

时间:2014-01-29 11:00:31

标签: c#

我在字符串中有这个值

string FinalValue=" 0XXXXXXXXX";

我需要获取整数值。

但是当我将它转换成如下

 custNUmber = int.Parse(FinalValue);

它表示对于int32,值太大或太小。 C#

当我使用长时,它会跳过第一个数字0。

3 个答案:

答案 0 :(得分:6)

数学说07894204661 == 7894204661这就是为什么结果long总是 7894204661 ;如果您想在将long转换回String恢复前导零(例如,为了在TextBox中显示它,打印到控制台等),您可以使用< EM>格式化:

  String FinalValue=" 07894204661";
  long custNUmber = long.Parse(FinalValue.Trim());

  // 11 digits wanted; "07894204661" is the outcome
  String value = custNUmber.ToString("D11"); 

P.S。仅int.MaxValue == 2147483647;当您尝试将“07894204661”转换为int时,这是原因

答案 1 :(得分:2)

前导零根本不是整数的一部分。实际上0123==123产生了真实。

所以你可以先将它转换为long来处理它是一个数值很小的情况(f.e.用于记录目的):

int custNUmber;
long l;
if(long.TryParse(FinalValue, out l))
{
    if(l < int.MinValue || l > int.MaxValue)
    {
        // log
    }
    else
    {
        custNUmber = (int)l;
    }
}
else
{
    // not a number
}

答案 2 :(得分:0)

使用long是正确的做法。零不是数字的一部分所以它应该跳过它。我担心领先的空间。您可能需要在解析它之前将其修剪掉。

custNUmber = long.Parse(FinalValue.trim());