Convert.ToInt32()一个带有逗号的string

我有一个string,有时有逗号分隔数字1,500 ,我需要将其转换为一个Int,目前它是抛出一个exception,有人可以告诉我如何解决这个问题,所以有时我可能会input逗号和其他时间用逗号,它仍然会转换。

你可以使用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' } 

您可以使用Decimal.Parse()然后将结果转换为int 。 这也适用于当前的文化,或者你可以指定一个CultureInfo来使用。 不需要手动处理逗号,小数点等,这些都是内置到.NET中。

如果你不必担心各个国家的规则(例如,有些使用逗号作为小数位而不是千位分隔符),那么只需先删除逗号。

例如

 string nastyNumber = "1,234"; int result = int.Parse(nastyNumber.Replace(",", "")); 

(如果你需要浮点数,用intreplaceint)

什么是删除逗号的蛮力build议? 如果string像“1,1,1”一样呢? 这是一个有效的号码? 删除逗号将使其成为一个有效的数字,并使转换语义不正确。

有一个原因NumberStyles存在和Int.Parse()方法可以parsing或不考虑数字样式。

在将其转换为int之前replace(';', '')可以先replace(';', '')

您可以在调用Convert.ToInt32()之前用String.Emptyreplace逗号,也可以使用带有NumberStyles.AllowThousands Int32.Parse()Int32.TryParse()作为参数之一。

Int32.Parse

Int32.TryParse

你可以使用代码

 int num = Strings.Replace(str, ",", string.Empty); 

这将用“”(空string)replace所有出现的“,”。 所以100万转1000000