我不确定这是如何在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");
}
Run Code Online (Sandbox Code Playgroud)
正如您所指出的,NumberStyles.AllowThousands并不强制逗号位于正确的位置。所以我认为正则表达式可以在这里帮助你:
Regex.IsMatch("11,23.23", "^[+-]?[0-9]{1,3}(,[0-9]{3})*(.[0-9]*)?$");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1390 次 |
| 最近记录: |