鉴于:
我需要拆分并创建字符串集合的字符串dayCodes(即"MWF"或"MRFU"),以便我可以得到星期几字符串列表(即"Monday", "Wednesday", "Friday"或"Monday", "Thursday", "Friday", "Sunday").
// this causes a run-time exception because you can't cast Char to String
var daysArray = days.ToCharArray().Cast<string>().ToArray();
// for each dayCode, overwrite the code with the day string.
for (var i = 0; i < daysArray.Length; i++)
{
switch (daysArray[i])
{
case "M":
daysArray[i] = "Monday";
break;
case "T":
daysArray[i] = "Tuesday";
break;
case "W":
daysArray[i] = "Wednesday";
break;
case "R":
daysArray[i] = "Thursday";
break;
case "F":
daysArray[i] = "Friday";
break;
case "S":
daysArray[i] = "Saturday";
break;
case "U":
daysArray[i] = "Sunday";
break;
}
}
daysArray[daysArray.Length - 1] = "and " + daysArray[daysArray.Length - 1];
return string.Join(", ", daysArray);
Run Code Online (Sandbox Code Playgroud)
问题:
问题是,你可以不投Char给String我的猜测是有道理的,因为一个不是从其他继承.你仍然认为编译器会把它Char作为一个字符长String.
有没有快速的方法(比如使用Cast<string>())这样做,所以我不必List<string>从头开始创建?
Bro*_*ass 23
只是使用char.ToString()会工作:
var daysArray = days.ToCharArray().Select( c => c.ToString()).ToArray();
Run Code Online (Sandbox Code Playgroud)
或者,在我的脑海中有一个更好的解决方案,为什么不直接将字符串与字典一起用于映射:
var daysArray = days.Select( c => dayMapping[c]).ToArray();
Run Code Online (Sandbox Code Playgroud)
与dayMapping只是一个Dictionary<char, string>映射到全天名:
Dictionary<char, string> dayMapping = new Dictionary<char,string>()
{
{ 'M', "Monday" },
{ 'T', "Tuesday" }
//and so on
}
Run Code Online (Sandbox Code Playgroud)