2010-08-30 38 views
3

我有一个要求,客户需要验证一堆excel电子表格。其中一个验证规则是该字段必须是一个看起来像'x.xx'的数字(所以'3.00'是有效的,'3.000'不是)。这应该像Double.TryParseExact(s,“#。##”,out number)一样简单,但我想它不在那里。有没有办法不使用正则表达式来完成这个任务?客户端正在使用DSL,我不想让他们学习正则表达式。如何解析与DateTime.TryParseExact等效的数字?

回答

3

我想你可以做到这一点?

public static bool TryParseExact(string text, string format, out double value) 
{ 
    if (double.TryParse(text, out value)) 
    { 
     // basically, make sure that formatting the result according to the 
     // specified format ends up providing the same value passed in 
     return text == value.ToString(format); 
    } 

    return false; 
} 

这只是一个想法;说实话,我并没有完全想到这一切。

+0

我刚发现客户需要给定#。##,'3','3.1'和'3.11'都必须通过。您的代码片段完美无瑕。 – 2010-08-30 23:31:53

+0

+1我喜欢这样:)与我的回应相比,它确实简化了方法。 – 2010-08-30 23:45:06