如果我(在.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")
?
感谢您的帮助!
答案 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的迷惑。