使用linq </string,string>从分号分隔的字符串创建字典<string,string>

时间:2011-07-14 18:33:15

标签: c# linq

所以我有一个字符串:

"some key:some value; john:doe;age:234"

我已经编写了一个接受此字符串并返回:

的方法
Dictionary<string,string>

是否有人可以通过linq做到这一点很奇怪?

1 个答案:

答案 0 :(得分:13)

假设分隔符不能出现在键或值中:

var dict = str.Split(';')
              .Select(s => s.Split(':'))
              .ToDictionary(a => a[0].Trim(), a => a[1].Trim()));

这不是最快的方法,但它是最简单的。

你也可以使用正则表达式:

static readonly Regex parser = new Regex(@"([^:]):([^;])");

var dict = parser.GetMatches(str)
                 .Cast<Match>()
                 .ToDictionary(m => m.Groups[0].Value.Trim(), 
                               m => m.Groups[0].Value.Trim()
                 );