使用C#检查字符串是否为有效年份的最佳方法是什么?
我目前有一个下拉列表,其中包含值{'All','2009','2008'}等,我想知道选择是其中一个日期还是'All'字段。
目前我正在检查bool isYearValid = (Year.ToLower() == "all") ? false : true;
如何检查该值是否为有效年份,以便我不必对“全部”进行硬编码检查?
答案 0 :(得分:10)
鉴于一年只需要一个有效的数字,你可以使用int32.TryParse,然后根据你想要年份的范围来检查范围。
答案 1 :(得分:8)
您可以尝试将年份解析为整数:
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
}
答案 2 :(得分:3)
你可以使用:
DateTime dateTime;
var year = ...
DateTime.TryParse(string.Format("1/1/{0}", year), out dateTime);
答案 3 :(得分:0)
无论如何这不会更好吗?
bool isYearValid = !string.Equals(Year, "all", StringComparison.OrdinalIgnoreCase);
答案 4 :(得分:0)
怎么样:
<asp:ListItem Value="1900" Text="All" />
这样您就不必在验证点手动检查“全部”。你仍然需要检查1900,当实际实现这个时,但是现在肯定有办法避免使那个成为特殊场景。
除此之外,DateTime.TryParse
是查明字符串表示是否为有效日期的正确方法。
答案 5 :(得分:0)
嗯,没有人提到它,但为什么没有定义'All'的符号 某处并在下拉初始化和比较中使用它?