不应该NumberStyles.AllowThousands只允许在美国文化中千位分隔符吗?

时间:2017-12-02 10:14:15

标签: c# .net-4.5 number-formatting

我想只在数千个地方允许使用逗号的数字字符串值,但是 这段代码不能正常工作,并成功解析了千位上没有逗号的“2,22”。

   double dollarValue;
           var dollarStringValue="2,22";
            var usCulture = CultureInfo.CreateSpecificCulture("en-US");
            var allowedNumberStyle = NumberStyles.AllowThousands | NumberStyles.AllowDecimalPoint;
            if (double.TryParse(dollarStringValue, allowedNumberStyle, usCulture, out dollarValue))
            { 
            // This is parsed successfully to 222
             Console.WriteLine(dollarValue);
            }

这是在en-Us文化中NumberStyles.AllowThousands的预期行为(它将NumberFormatInfo.NumberGroupSizes设置为3)?或者我错过了吗?

使用.Net 4.5

1 个答案:

答案 0 :(得分:1)

如果你想验证字符串匹配模式n,nnn,nnn,nnn ...尝试使用正则表达式,比如

Regex r = new Regex(@"^\d{1,3}(,\d\d\d)*$");
if(r.IsMatch(yourNumber))
  ...