将字符串拆分为Dictionary <string,int =“”> </string,>

时间:2014-07-21 19:31:49

标签: c# dictionary split

我有一个这样的字符串:&#34;内容; 123内容; 456 contentss; 789&#34;等。

我想拆分这个字符串来获得一个字典,但我不知道你能做到这一点。我尝试拆分字符串,但我只有一个List。

内容(在半冒号之前)始终是唯一的字符串。 在半冒号之后,我总是有一个数字,直到找到空间。 数字总是一个int(没有浮动需要)。

有人能帮帮我吗?

5 个答案:

答案 0 :(得分:5)

您可以使用以下LINQ表达式:

"content;123 contents;456 contentss;789"
    .Split(' ')
    .Select(x => x.Split(';'))
    .ToDictionary(x => x[0], x => int.Parse(x[1]));

答案 1 :(得分:2)

string input = "content1;123 content2;456 content3;789";
var dict = Regex.Matches(input, @"(.+?);(\d+)").Cast<Match>()
                .ToDictionary(m => m.Groups[1].Value, m => int.Parse(m.Groups[2].Value));

答案 2 :(得分:1)

var myList = "content1;number1 content2;number2 content3;number3";
var myDictionary = myList.Split(' ').Select(pair => pair.Split(';')).ToDictionary(splitPair => splitPair[0], splitPair => int.Parse(splitPair[1]));

答案 3 :(得分:1)

您可以这样做:

string value = "content;123 contents;456 contentss;789";
Dictionary<string, int> data = new Dictionary<string,int>();

foreach(string line in value.Split(' '))
{
    string[] values = line.Split(';');
    if (!data.ContainsKey(values[0]))
    {
        data.Add(values[0], Convert.ToInt32(values[1]));
    }
}

答案 4 :(得分:0)

    static void Main(string[] args)
    {
        string content = "content;123 contents;456 contentss;789";
        Dictionary<string, int> result = new Dictionary<string, int>();

        content.Split(' ').ToList().ForEach(x =>
        {
            var items = x.Split(';');
            result.Add(items[0], int.Parse(items[1]));
        });

        foreach(var item in result)
        {
            Console.WriteLine("{0} -> {1}" , item.Key, item.Value);
        }
    }