加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用decimal.tryparse的C#千位分隔符问题

发布时间:2020-12-15 08:07:30 所属栏目:百科 来源:网络整理
导读:我不确定这是如何在C#中正确解析的,但我希望它失败的地方是逗号没有分隔每个可重复的三个值.示例:1,123.23应该通过,但11,23.23应该在我看来失败.但实际输出是tryparse似乎总是返回true,无论逗号的位置在十进制之前的位置. 编辑:正在接受正则表达式的答案,
我不确定这是如何在C#中正确解析的,但我希望它失败的地方是逗号没有分隔每个可重复的三个值.示例:1,123.23应该通过,但11,23.23应该在我看来失败.但实际输出是tryparse似乎总是返回true,无论逗号的位置在十进制之前的位置.

编辑:正在接受正则表达式的答案,因为发现这是一个错误.谢谢.

string price = "1,1,2,3.23";
 decimal outputValue = 0;
 var allowedStyles = (NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands);


 if (Decimal.TryParse(price,allowedStyles,CultureInfo.GetCultureInfo("EN-us"),out outputValue))
 {
    Console.WriteLine("Pass");
 }

解决方法

正如您所注意到的NumberStyles.AllowThousands不强制逗号在正确的位置.所以我认为正则表达式可以帮助你:
Regex.IsMatch("11,23.23","^[+-]?[0-9]{1,3}(,[0-9]{3})*(.[0-9]*)?$");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读