文化感知十进制验证

时间:2015-01-21 10:48:39

标签: c# .net validation

我在验证从HTML表单传入的十进制值时遇到一些问题。我的设置是:

CurrentCulture.Name = "de-DE" (German culture)
CurrentCulture.NumberFormat.NumberGroupSeparator = "." (default for German culture)
CurrentCulture.NumberFormat.NumberDecimalSeparator = "," (default for German culture)

Form value = "11.1"

我需要验证表单值并希望验证失败,因为“11.1”不是德国文化中的有效数字,其中“。”是组分隔符,而不是小数分隔符。

但是,以下两个语句都成功,并将Form值转换为(十进制)111,这是不正确的。

decimal.TryParse("11.1", NumberStyles.Any, CultureInfo.CurrentCulture, out x)

Convert.ToDecimal("11.1", CultureInfo.CurrentCulture)

不允许使用NumberGroupSeparator(decimal.Parse(“11.1”,NumberStyles.Number ^ NumberStyles.AllowThousands)),因为我需要启用包含组分隔符的表单输入。

由于全球化涉及的所有细微之处,我也在努力避免编写自定义RegEx。

我该如何解决这个问题?是否有更严格的解析方法,有点等同于日期的DateTime.TryParseExact方法?

0 个答案:

没有答案
相关问题