簡體   English   中英

如何將char數組轉換為字符串數組?

[英]How to convert a char array to a string array?

鑒於:

一個字符串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);

問題:

問題是你不能將CharString ,我猜這是有道理的,因為一個不是從另一個繼承的。 您仍然認為編譯器會將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只是一個映射到全天名稱的Dictionary<char, string>

Dictionary<char, string> dayMapping = new Dictionary<char,string>()
{
    {  'M', "Monday" },
    {  'T', "Tuesday" }
    //and so on
}
char[] daysCodeArray = days.ToCharArray();
string[] daysArray = daysCodeArray.Select(el =>
{
    switch (el)
    {
        case 'M':
            return "Monday";

        case 'T':
            return "Tuesday";

        case 'W':
            return "Wednesday";

        case 'R':
            return "Thursday";

        case 'F':
            return "Friday";

        case 'S':
            return "Saturday";

        case 'U':
            return "Sunday";
     }
     throw new ArgumentException("Invalid day code");
}).ToArray();

如果需要,可以將lambda更改為單獨的方法。

要回答標題中的任何人在搜索中發現這個問題...(不是所描述的問題......那是早期帖子之一。)

var t =“ABC”;
var s = t.ToCharArray()。選擇(c => c.ToString())。ToArray();

你可以這樣做:

            var dayCode = "MWF";
            var daysArray = new List<string>();
            var list = new Dictionary<string, string>{
                {"M", "Monday"},
                {"T", "Tuesday"},
                {"W", "Wednesday"},
                {"R", "Thursday"},
                {"F", "Friday"},
                {"S", "Saturday"},
                {"U", "Sunday"}
            };

            for(int i = 0,max = dayCode.Length; i < max; i++)
            {
                var tmp = dayCode[i].ToString();
                if(list.ContainsKey(tmp))
                {
                    daysArray.Add(list[tmp]);
                }
            }
            Console.WriteLine(string.Join(",", daysArray));

輸出:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM