当我尝试使用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
中读取组分隔符)
干杯 卢瓦克
答案 0 :(得分:2)
让Number
(包括AllowThousands
)不会要求一个逗号 - 只需允许它。因此,您可以使用带有或不带逗号的Number
。或使用Any
或AllowThousands
。
请注意,“逗号”可以与“千位分隔符”交换 - 即在某些Eurupe中它可以变化(句号等)。如果表示“逗号为数千”,则使用固定文化(例如InvariantCulture
)。
答案 1 :(得分:0)
您可以随时使用您使用的第二行
var d = double.Parse("1,234", NumberStyles.Number, CultureInfo.CurrentUICulture);
因为它将正确转换1234以及1,234,它应覆盖使用'。'的系统上的1.234。作为组分隔符
答案 2 :(得分:0)
您应该使用CurrentCulture
解析用户输入,而不是CurrentUICulture
。
属性CurrentUICulture
指的是显示用户界面的语言,CurrentCulture
指的是Windows中指定的当前区域设置。这样,使用提供翻译为英语(CurrentUICulture
)的用户界面的应用程序的用户仍然可以查看/输入格式化为他在Windows中设置的区域设置的日期和数字(CurrentCulture
)。