我有一个字符串,有时候用逗号分隔像1,500
这样的数字,我需要将它转换为Int,目前它正在抛出异常,有人可以告诉我如何解决这个问题,以便有时候我可以用逗号输入数字,用逗号输入其他时间,它仍会转换。
答案 0 :(得分:132)
您可以使用int.Parse
并添加NumberStyles.AllowThousands
标记:
int num = int.Parse(toParse, NumberStyles.AllowThousands);
或int.TryParse
告诉您操作是否成功:
int num;
if (int.TryParse(toParse, NumberStyles.AllowThousands,
CultureInfo.InvariantCulture, out num))
{
// parse successful, use 'num'
}
答案 1 :(得分:6)
您可以使用Decimal.Parse()
,然后将结果转换为int
。这也适用于当前文化,或者您可以指定要使用的CultureInfo
。无需手动处理逗号,小数点等,这些都是.NET内置的。
答案 2 :(得分:3)
删除逗号的蛮力建议是什么?如果字符串是“1,1,1”之类的话怎么办?这是有效号码吗?删除逗号会使其成为有效数字,并使转换在语义上不正确。
存在NumberStyles的原因,Int.Parse()方法可以使用或不考虑数字样式进行解析。
答案 3 :(得分:2)
在将其转换为int之前,您可以执行replace(';', '')
。
答案 4 :(得分:2)
如果您不必担心各个国家/地区的规则(例如,有些人使用逗号作为小数位而不是千位分隔符),那么请先删除逗号。
e.g
string nastyNumber = "1,234";
int result = int.Parse(nastyNumber.Replace(",", ""));
(如果需要浮点,则将int替换为double)
答案 5 :(得分:1)
您可以使用代码
int num = Strings.Replace(str, ",", string.Empty);
用“”(空字符串)替换所有出现的“,”。所以1,000,000转1000000
答案 6 :(得分:0)
您可以在致电String.Empty
之前将逗号替换为Convert.ToInt32()
,或者您可以将Int32.Parse()
或Int32.TryParse()
与NumberStyles.AllowThousands
一起用作其中一个参数。