【发布时间】:2014-07-18 17:04:43
【问题描述】:
我有一串星期几。我在 C# 中解析它并将每天存储在一个单独的变量中。例如:
string weekdayName = "Mon,Tue,Wed,Thu,Fri,Sat,Sun";
我使用“,”作为分隔符将它们分开:
var weekDayName = weekDay.Split(',');
var firstDay = weekDayName[0];
var secondDay = weekDayName[1];
var thirdDay = weekDayName[2];
var fourthDay = weekDayName[3];
var fifthDay = weekDayName[4];
var sixDay = weekDayName[5];
var seventhDay = weekDayName[6];
一切正常。但是,字符串会动态变化。用户指定星期几。例如,字符串 weekDayName 只能包含“Mon,Tue”。但我遇到的问题是,如果不是所有位置都包含值,它将失败。
索引超出了数组的范围。
我试过了:
if (weekDayName[5].Length >0)
{
var sixDay = weekDayName[5];
}
但还是失败了……
如何检查并获取现有数据的值,如果缺少某些位置我就忽略它们?
我想要实现的是:
DateTime currentDay = new DateTime();
currentDay = DateTime.Now;
if (currentDay.ToString("ddd") == firstDay || currentDay.ToString("ddd") == seconday)
{
// I will check the currentDay against every day of the week
//do something
}
【问题讨论】:
-
这个检查
if (weekDayName[5].Length >0)应该是if (weekDayName.Length > 0)。目前您正在尝试检查字符串的长度,而不是数组的长度。但是一定有更好的方法来处理,为什么不使用DayOfWeek枚举 -
我很好奇你为什么在 DateTime 为你提供这些数据时试图解析它:)
-
Pheonixblade9,我实际上是从注册表中获取该字符串。
-
“我实际上是从注册表中获取该字符串”上帝与你同在。
-
那么你对
firstDay、secondDay、thirdDay、...做了什么?为什么你不能有一个你使用的string[] days?