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.Empty
replace逗号,也可以使用带有NumberStyles.AllowThousands
Int32.Parse()
或Int32.TryParse()
作为参数之一。
Int32.Parse
Int32.TryParse
你可以使用代码
int num = Strings.Replace(str, ",", string.Empty);
这将用“”(空string)replace所有出现的“,”。 所以100万转1000000