Convert.ToInt32()一个带逗号的字符串

时间:2009-12-01 06:19:56

标签: c#

我有一个字符串,有时候用逗号分隔像1,500这样的数字,我需要将它转换为Int,目前它正在抛出异常,有人可以告诉我如何解决这个问题,以便有时候我可以用逗号输入数字,用逗号输入其他时间,它仍会转换。

7 个答案:

答案 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一起用作其中一个参数。

Int32.Parse

Int32.TryParse