如何将char数组转换为字符串数组?

aar*_*ona 11 c# casting

鉴于:

我需要拆分并创建字符串集合的字符串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)

问题:

问题是,你可以不投CharString我的猜测是有道理的,因为一个不是从其他继承.你仍然认为编译器会把它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)

  • 在这里使用System.DayOfWeek枚举代替魔术字符串也是值得考虑的. (2认同)