2010-08-30 39 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