5

当我尝试使用 Parse 或 TryParse 或 Convert.ChangeType 将字符串转换为数值时,我无法管理系统中定义的千位分隔符:

如果我输入:

var d = double.Parse("1,234", CultureInfo.CurrentUICulture);

它不返回 1234。

如果我想使用组分隔符,我必须输入:

var d = double.Parse("1,234", NumberStyles.Number, CultureInfo.CurrentUICulture);

这一次,结果如预期。

但是,我不想强​​制使用千位分隔符,我只想在系统在全球化设置中指定它时使用它。有没有办法知道是否使用了分隔符(我知道我可以在 中读取组分隔符CultureInfo.CurrentUICulture.NumberFormat.NumberGroupSeparator

干杯洛伊克

4

3 回答 3

2

拥有Number(包括AllowThousands)不需要逗号- 它只是允许它。因此,您可以使用Number或不使用逗号。或使用AnyAllowThousands

请注意,“逗号”可以与“千位分隔符”互换 - 即在某些 Eurupe 中,它可能会有所不同(句号等)。如果您的意思是“逗号是数千”,那么请使用固定的文化(例如InvariantCulture)。

于 2010-03-05T12:47:41.500 回答
0

你总是可以使用你使用的第二行

var d = double.Parse("1,234", NumberStyles.Number, CultureInfo.CurrentUICulture);

因为它将正确转换 1234 和 1,234,并且它应该涵盖使用“。”的系统上的 1.234 作为组分隔符

于 2010-03-05T12:45:30.807 回答
0

CurrentCulture您应该使用and not解析用户输入CurrentUICulture

该属性CurrentUICulture是指显示用户界面的语言以及CurrentCulture在 Windows 中指定的当前语言环境。这样,使用提供翻译成英语 ( CurrentUICulture) 的用户界面的应用程序的用户仍然可以查看/输入,例如,格式化为他在 Windows ( CurrentCulture) 中设置的区域设置的日期和数字。

于 2010-03-05T12:53:46.650 回答