我可以检查格式说明符是否对给定的数据类型有效吗?
如果我(在.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
问题:在应用该格式之前,有没有办法检查格式说明符是否有效(除了尝试格式化并捕获exception),例如long.IsFormatValid("Q10")
?
感谢帮助!
我没试过这个,但我认为你可以创建一个扩展方法,例如:
namespace ExtensionMethods { public static class MyExtensions { public static bool IsFormatValid(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")) { ...
我没有建议检查,而是建议开发人员阅读文档以找出允许的位置。
但是,如果出现大量拼写错误的问题,我想您可以根据该页面上的信息编写查找表。 虽然这可能只会给你一种虚假的安全感,因为你会让人们在有效的格式说明符之间犯错(写一个f
但是他们的意思是e
等)。
编辑删除关于TryParse / Parse的混淆位。