Given:
一个字符串dayCodes
(i.e. "MWF"
or "MRFU"
),我需要分割并创建一个字符串集合,这样我就可以获得一周中某天字符串的列表(即"Monday", "Wednesday", "Friday"
or "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);
Problem:
问题是你无法投射Char
to String
我认为这是有道理的,因为一个不是从另一个继承的。你仍然认为编译器会强制转换Char
作为一个字符长String
.
有没有一种快速的方法(比如使用Cast<string>()
)这样做,这样我就不必创建List<string>
从头开始?
只是使用char.ToString()
会工作:
var daysArray = days.ToCharArray().Select( c => c.ToString()).ToArray();
或者,我认为更好的解决方案为什么不直接使用字符串和字典进行映射:
var daysArray = days.Select( c => dayMapping[c]).ToArray();
with dayMapping
just a Dictionary<char, string>
映射到全天名称:
Dictionary<char, string> dayMapping = new Dictionary<char,string>()
{
{ 'M', "Monday" },
{ 'T', "Tuesday" }
//and so on
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)