从分离的字符串</string,string>创建字典<string,string>

时间:2014-02-08 09:49:06

标签: c# string dictionary

我的应用程序需要使用字符串:

"????infoResponse\n\\voip\\1\\g_humanplayers\\1\\g_needpass\\0\\pure\\1\\gametype\\0\\sv_maxclients\\8\\clients\\1\\mapname\\oa_rpg3dm2\\hostname\\test\\protocol\\71"

我正在寻找从此字符串创建dictionary<string,string>的最快解决方案 其中第一个字符串是键,下一个是值。

我试试

teststring.Split(new string[] { "\\" }, StringSplitOptions.None);

但不知道如何转换数组ToDictionary

现在我有:

[0]: "voip"
[1]: "1"
[2]: "g_humanplayers"
[3]: "1"
[4]: "g_needpass"
[5]: "0"
[6]: "pure"
[7]: "1"
[8]: "gametype"
[9]: "0"
[10]: "sv_maxclients"
[11]: "8"
[12]: "clients"
[13]: "1"
[14]: "mapname"
[15]: "oa_rpg3dm2"
[16]: "hostname"
[17]: "test"
[18]: "protocol"
[19]: "71"

但我需要键和值对:

 voip -> 1 
 g_humanplayers ->1
 g_needpass -> 0 

如何将字符串标记为键和值对?

1 个答案:

答案 0 :(得分:2)

这是你的字符串。

   string str="????infoResponse\n\\voip\\1\\g_humanplayers\\1\\g_needpass\\0\\pure\\1\\gametype\\0\\sv_maxclients\\8\\clients\\1\\mapname\\oa_rpg3dm2\\hostname\\test\\protocol\\71";

这会将所有值和键分成一个列表

var list1= str.Split(new[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);

这将创建一对字典键和值

var  list2 = list1
            .Select((s, i) => new { s, i })
            .GroupBy(x => x.i / 2)
            .ToDictionary(g => g.First().s, g => g.Last().s);

输出

 var g_humanplayers = list2["g_humanplayers"].ToString();
 var g_needpass = list2["g_needpass"].ToString();

g_humanplayers存储值1
g_needpass商店值0

enter image description here