Given:
A string dayCodes
(i.e. "MWF"
or "MRFU"
) that I need to split and create a collection of strings so I can have a list of day of the week strings (i.e. "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:
The problem is that you can't cast Char
to String
which I guess makes sense because one is not inherited from the other. Still you'd think that the compiler would cast the Char
as a one character long String
.
Is there a quick way (like using Cast<string>()
) to do this so I don't have to create a List<string>
from scratch?
Just using char.ToString()
would work:
var daysArray = days.ToCharArray().Select( c => c.ToString()).ToArray();
Alternatively, and a better solution in my mind why don't you use the string directly with a dictionary for the mapping:
var daysArray = days.Select( c => dayMapping[c]).ToArray();
with dayMapping
just a Dictionary<char, string>
that maps to the full day name:
Dictionary<char, string> dayMapping = new Dictionary<char,string>()
{
{ 'M', "Monday" },
{ 'T', "Tuesday" }
//and so on
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With