10

如何在 C# 中将字符串(例如“-100,100”)转换为 long。

我目前有一行代码是

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands);

但是当 x 是“负数”时,这会中断。

我的方法

long xi = long.Parse("-100,253,1", 
System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowThousands);

错了,因为它坏了。

4

2 回答 2

10

试一试:

long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);

很可能是因为您正在声明标志,您可能需要声明所有可能会被击中的标志。我刚刚使用问题中给定的字符串值确认此代码在测试项目中工作。让我知道它是否符合您的要求。在单个参数中声明多个标志时使用 | 代替 &

编辑: http: //msdn.microsoft.com/en-us/library/cc138362.aspx 在“作为位标志的枚举类型”标题下找到不同位运算符的解释(这比我想象的更难找到。)

于 2012-05-23T07:45:21.917 回答
6

为了避免异常,我会使用 TryParse 而不是 Parse,即:

long xi;
if (long.TryParse(numberString, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign, null, out xi))
    {
        // OK, use xi
    }
    else
    {
        // not valid string, xi is 0
    }
于 2012-05-23T07:59:59.517 回答