如何验证基于小数点分隔符的小数?
我想验证数字,我只知道小数点分隔符(点或逗号)如何验证基于小数点分隔符的小数?
例如:n1 = 12.4和n2 = 1,234.5 - >两者对'。'都有效。作为小数点分隔符,并且对于','作为小数点分隔符都是无效的 。
Eg.2:n1 = 12,4和n2 = 1.234,5 - >两者对于','作为小数点分隔符都是有效的,并且对于'。'都是无效的 。作为小数分隔符。
到目前为止我试过了什么?
CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo;
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator;
并使用
decimal.Parse(stringValue, cultureInfo);
- 为Eg1 + '' =>都有效OK
- 例一+ ''=>都抛出异常OK
- 为Eg2 + ''=> N1抛出异常OK,N2抛出异常错误的
- 为Eg2 + '' => n1是124错误,n2引发异常确定
你推荐我做什么?
可以使用decimal.TryParse
而尝试捕捉异常
你可以尝试设置组分隔符,以及 - 这意味着,如果你知道小数点分隔符是一个逗号设置组分隔一个时期:
CultureInfo cultureInfo = CultureInfo.InvariantCulture.Clone() as CultureInfo;
cultureInfo.NumberFormat.NumberDecimalSeparator = myDecimalSeparator;
cultureInfo.NumberFormat.NumberGroupSeparator = myGroupSeparator;
文化应该也是如此 - 它会通过NumberFormat通过。请参阅[本示例](http://msdn.microsoft.com/en-us/library/ew0seb73.aspx) – 2013-02-22 15:23:43
我想你的正常文化是使用','作为组分隔符和'。'作为小数分隔符。因此,通过从不变文化中创建新文化,然后将小数点分隔符设置为'。'。就像无所事事。 另一方面,新创建的文化仍然使用','作为组分隔符,因此通过将小数点分隔符设置为','告诉'''既是组分隔符又是小数点分隔符。 这就是为什么它可以正常测试1和2,并且在其他测试中失败。
此链接可能会有所帮助:http://stackoverflow.com/questions/1559185/formatting-numbers-as-strings-with-commas-in-place-of-decimals – rsbarro 2013-02-22 15:20:33