2011-11-02 126 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可能是另一种情况。

相关问题