我可以检查格式说明符是否对给定的数据类型有效吗?

时间:2010-12-10 11:50:09

标签: c# .net formatting

如果我(在.NET / C#中)有一个long类型的变量,我可以将它转换为格式化的字符串,如:

long value = 12345;
string formattedValue = value.ToString("D10"); // returns "0000012345"

如果我指定的格式对该类型无效,我会得到一个例外:

long value = 12345;
string formattedValue = value.ToString("Q10"); // throws a System.FormatException

问题:在应用该格式之前,有没有办法检查格式说明符是否有效(除了尝试格式化和捕获异常),类似long.IsFormatValid("Q10")

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

我没试过这个,但我认为你可以创建一个扩展方法,如:

namespace ExtensionMethods
{
    public static class MyExtensions
    {

        public static bool IsFormatValid<T>(this T target, string Format)
            where T : IFormattable
        {
            try
            {
                target.ToString(Format, null);
            }
            catch
            {
                return false;
            }  
            return true;
        }
    }
}
然后你可以申请

long value = 12345;
if (value.IsFormatValid("Q0")) 
{
    ...

答案 1 :(得分:2)

我建议开发人员阅读documentation以找出允许的内容,而不是创建一个检查。

但是,如果出现大量拼写错误的问题,我想您可以根据该页面上的信息编写查找表。虽然这可能会给你一种虚假的安全感,因为你会让人们在有效的格式说明符之间犯错(编写f但他们的意思是e等)。

编辑删除关于TryParse / Parse的迷惑。