2011-11-02 116 views
1

有沒有簡單的方法來檢查格式字符串是否有效?例如,以下是我們用來測試數字格式字符串的代碼;簡單的方法來檢查FormatString是否有效?

public static bool IsValidFormatStringNumber(string FormatString) 
{ 
    try 
    { 
     const decimal number = 0.056m; 
     var formattedNumber = number.ToString(FormatString); 
     return formattedNumber.Length > 0; 
    } 
    catch 
    { 
     return false; 
    } 
} 

我們試圖捕捉異常或確定結果字符串是否沒有長度。然而,此測試失敗,因爲「hsibbur」(任何垃圾)的格式字符串會生成一串長度爲「hsaibbur」的字符串。

我們希望對百分比和日期格式字符串進行相同的測試。

+0

正在檢查基本類型的'toString'基本類似'x = 1; if(x!= 1)拋出錯誤;'?我沒有看到如此細緻,以至於你需要測試一個字符串格式(除非我錯過了某些東西,或者你需要更好的舍入,或者...) - 編輯:你是否試圖蠻力IFormatProviders ? –

+4

但「hsibbur」的格式字符串_is_有效! –

+1

另外,如何只捕獲'FormatException'?您隱藏了您可能獲得的任何_real_例外。 –

回答

2

如果您只想檢查standard format strings,只需檢查您的格式字符串是否爲該列表的一部分。

如果你想檢查custom format strings(那不是「Other」或「Literal strings」),你可以製作一個正則表達式來完成它。

除此之外,由於格式字符串可以任意串,我不認爲驗證甚至適用

+0

謝謝Jordão。你的最後一點是好的,這是我們希望允許用戶輸入一個有效的主要原因之一。雖然可以輸入任何格式的字符串,但會導致異常情況向下遊拋出。更好地執行一個正確的/有效的格式字符串。 – paligap

1

如果FormatString等於formattedNumber,那麼返回false可能是另一種情況。

相關問題