我不知道如何能够在C#中正确解析,但我希望它失败的情况下逗号不分隔每个可重复的三个值。例如:1,123.23应该通过,但在我看来11,23.23应该失败。但实际的输出是tryparse似乎总是返回true,而不管逗号的位置在十进制之前。C#千分隔符问题与decimal.tryparse
编辑︰答案正则表达式被接受,因为它被发现这是一个错误。谢谢。
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");
}
你可能需要核对数量是否与正则表达式正确的格式第一,我不认为有反正用Decimal.TryParse做到这一点 –
@KenTucker我认为允许thousa nd是为此目的而设计的,它应该检查每三个重复的值。这是一个错误还是有任何货币格式接受1,2,3,456和1,23,45?因为它被称为千位分隔符。 – stackdisplay
有一些涉及数千个分隔符和'Parse'(或'Convert'或类似方法)的错误。要100%确定输入格式正确的唯一方法是手动检查。 – varocarbas