为什么`Int32.TryParse(" 1.00")`失败?

时间:2015-05-25 03:43:15

标签: c#

我正在开发一个项目 - 我必须从Excel单元格中读取值并进行某种计算。 下面是我试过的代码,str表示带有引号的Excel的值.-我想将其转换为Int进行进一步计算。

问题是我无法转换" str"值为整数

    String str ="1.00";
    str = str.Replace(@"""", @"\""");

    str = str.Replace("\"", "\\\"");

    if (Int32.TryParse(str, out i))
    {
        Console.WriteLine(i);
    }

1 个答案:

答案 0 :(得分:3)

正如其他人提到的那样,您尝试将1.00解析为Integer,而1.00实际上是Double数据类型而不是Integer。如果你想最终使用整数,我建议先转换为double,然后转换为整数:

if (Double.TryParse(str, out i))
{
    Console.WriteLine(Convert.ToInt32(i));
}

要从字符串值中删除引号,可以使用Substring方法,因为每个值在开头和结尾都有引号。该方法使用startIndex值并且子串的length被裁剪掉。我们可以从第二个字符开始子串,直到str.Length - 1,如下所示:

String str ="1.00";
str = str.Substring(0,(str.Length)-1); // new value of str will be 1.00