使用 C# 检查字符串是否为有效年份的最佳方法是什么?
我目前有一个包含值 {'All','2009','2008'} 等的下拉列表,我想知道选择是日期之一还是“All”字段。
目前我正在检查bool isYearValid = (Year.ToLower() == "all") ? false : true;
如何检查该值是否为有效年份,这样我就不必对“全部”进行硬编码检查?
鉴于年份只需要是一个有效数字,您就可以使用 int32.TryParse ,然后根据您希望年份所在的范围简单地检查范围。
你可以使用:
DateTime dateTime;
var year = ...
DateTime.TryParse(string.Format("1/1/{0}", year), out dateTime);
您可以尝试将年份解析为整数:
int iYear = 0;
if (Int.TryParse(Year, out iYear))
{
//You have a valid year inside iYear
//If you are not sure about the dropdown list values,
//you can of course do more checks for validity. For example:
//if iYear is in a proper range
}
这不是更好吗?
bool isYearValid = !string.Equals(Year, "all", StringComparison.OrdinalIgnoreCase);
怎么样:
<asp:ListItem Value="1900" Text="All" />
这样您就不必在验证点手动检查“全部”。在实际实施时,您仍然需要检查 1900,但无论如何,现在肯定有办法避免将其变成特殊情况。
除此之外,这DateTime.TryParse
是找出字符串表示是否为有效日期的正确方法。
好吧,没有人提到它,但为什么不在某处定义“全部”的符号并在下拉初始化和比较中使用它呢?