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

2024-05-13

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(使用前将#替换为@)

如何将字符数组转换为字符串数组? 的相关文章

随机推荐