如何将字符串(例如“-100,100”)转换为C#中的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);
错了,因为它破了。
答案 0 :(得分:9)
试一试:
long xi = long.Parse(x, System.Globalization.NumberStyles.AllowThousands | System.Globalization.NumberStyles.AllowLeadingSign);
这可能是因为您正在声明标记,您可能需要声明所有可能会被击中的标记。 我刚刚在问题中使用您给定的字符串值确认此代码是在测试项目中工作的。如果它符合您的要求,请告诉我。在单个参数中声明多个标志时使用|而不是&
编辑: http://msdn.microsoft.com/en-us/library/cc138362.aspx 在“枚举类型为位标志”标题下找到不同位运算符的探索(这比我想象的更难找到。)
答案 1 :(得分: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
}